osbot-utils 1.36.0__tar.gz → 1.37.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.36.0 → osbot_utils-1.37.0}/PKG-INFO +2 -2
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/README.md +1 -1
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/trace/Trace_Call.py +44 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/trace/Trace_Call__Config.py +1 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/trace/Trace_Call__Handler.py +18 -5
- osbot_utils-1.37.0/osbot_utils/testing/Stderr.py +25 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/testing/Stdout.py +9 -3
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Env.py +6 -1
- osbot_utils-1.37.0/osbot_utils/version +1 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/pyproject.toml +1 -1
- osbot_utils-1.36.0/osbot_utils/testing/Stderr.py +0 -19
- osbot_utils-1.36.0/osbot_utils/version +0 -1
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/LICENSE +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/base_classes/Cache_Pickle.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/base_classes/Kwargs_To_Disk.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/base_classes/Kwargs_To_Self.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/base_classes/Type_Safe.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/base_classes/Type_Safe__List.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/base_classes/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/context_managers/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/context_managers/capture_duration.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/context_managers/disable_root_loggers.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/classes/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/classes/singleton.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/lists/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/lists/filter_list.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/lists/group_by.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/lists/index_by.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/methods/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/methods/cache.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/methods/cache_on_function.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/methods/cache_on_self.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/methods/cache_on_tmp.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/methods/capture_exception.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/methods/capture_status.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/methods/catch.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/methods/context.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/methods/depreciated.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/methods/function_type_check.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/methods/obj_as_context.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/methods/remove_return_value.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/methods/required_fields.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/fluent/Fluent_Dict.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/fluent/Fluent_List.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/fluent/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/mermaid/Mermaid.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/mermaid/Mermaid__Edge.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/mermaid/Mermaid__Graph.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/mermaid/Mermaid__Node.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/mermaid/Mermaid__Renderer.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/mermaid/configs/Mermaid__Edge__Config.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/mermaid/configs/Mermaid__Node__Config.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/mermaid/configs/Mermaid__Render__Config.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/mermaid/examples/Mermaid_Examples__FlowChart.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/mermaid/models/Mermaid__Diagram_Direction.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/mermaid/models/Mermaid__Diagram__Type.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/mermaid/models/Mermaid__Node__Shape.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/mgraph/MGraph.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/mgraph/MGraph__Config.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/mgraph/MGraph__Data.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/mgraph/MGraph__Edge.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/mgraph/MGraph__Node.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/mgraph/MGraph__Random_Graphs.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/mgraph/MGraph__Serializer.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/mgraph/MGraphs.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/graphs/mgraph/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/CFormat.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/CPrint.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/Dict_To_Attr.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/Hashicorp_Secrets.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/Local_Cache.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/Local_Caches.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/Print_Table.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/Python_Audit.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/Random_Seed.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/Type_Registry.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/Zip_Bytes.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/Ast.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/Ast_Base.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/Ast_Data.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/Ast_Load.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/Ast_Merge.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/Ast_Node.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/Ast_Visit.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/Call_Tree.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Add.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Alias.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_And.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Argument.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Arguments.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Assert.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Assign.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Attribute.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Aug_Assign.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Bin_Op.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Bool_Op.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Break.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Call.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Class_Def.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Compare.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Comprehension.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Constant.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Continue.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Dict.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Eq.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Except_Handler.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Expr.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_For.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Function_Def.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Generator_Exp.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Gt.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_GtE.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_If.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_If_Exp.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Import.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Import_From.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_In.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Is.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Is_Not.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Keyword.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Lambda.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_List.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_List_Comp.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Load.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Lt.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_LtE.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Mod.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Module.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Mult.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Name.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Not.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Not_Eq.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Not_In.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Or.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Pass.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Pow.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Raise.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Return.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Set.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Slice.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Starred.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Store.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Sub.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Subscript.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Try.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Tuple.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Unary_Op.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_While.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_With.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_With_Item.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/Ast_Yield.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ast/nodes/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Actions.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Config.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Data.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Invoke.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Row.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Table.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/cache_requests/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/cache_requests/flows/flow__Cache__Requests.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/flows/Flow.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/flows/Task.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/flows/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/html/Dict_To_Css.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/html/Dict_To_Html.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/html/Dict_To_Tags.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/html/Html_To_Dict.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/html/Html_To_Tag.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/html/Tag__Base.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/html/Tag__Body.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/html/Tag__Div.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/html/Tag__H.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/html/Tag__HR.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/html/Tag__Head.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/html/Tag__Html.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/html/Tag__Link.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/html/Tag__Style.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/html/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/pubsub/Event__Queue.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/pubsub/PubSub__Client.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/pubsub/PubSub__Room.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/pubsub/PubSub__Server.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/pubsub/PubSub__Sqlite.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/pubsub/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Connect.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Disconnect.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Join_Room.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Leave_Room.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Message.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/pubsub/schemas/Schema__PubSub__Client.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/pubsub/schemas/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/Capture_Sqlite_Error.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/Sqlite__Cursor.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/Sqlite__Database.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/Sqlite__Field.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/Sqlite__Globals.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/Sqlite__Table.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/Sqlite__Table__Create.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Database__Disk.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Table.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/cache/Schema__Table__Requests.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Patch.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Sqlite.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Table.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/cache/Sqlite__DB__Requests.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/cache/TestCase__Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/cache/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Files.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Graph.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Json.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Local.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/domains/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/domains/schemas/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/models/Sqlite__Field__Type.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/models/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/sample_data/Sqlite__Sample_Data__Chinook.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/sample_data/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder__Select.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/sql_builder/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Config.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Edges.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Files.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Nodes.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/sqlite/tables/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ssh/SCP.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ssh/SSH.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ssh/SSH__Cache__Requests.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ssh/SSH__Execute.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ssh/SSH__Health_Check.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ssh/SSH__Linux.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ssh/SSH__Linux__Amazon.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ssh/SSH__Python.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ssh/TestCase__SSH.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/ssh/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/trace/Trace_Call__Graph.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/trace/Trace_Call__Print_Lines.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/trace/Trace_Call__Print_Traces.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/trace/Trace_Call__Stack.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/trace/Trace_Call__Stack_Node.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/trace/Trace_Call__Stats.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/trace/Trace_Call__View_Model.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/trace/Trace_Files.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/helpers/trace/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/testing/Catch.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/testing/Duration.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/testing/Hook_Method.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/testing/Log_To_Queue.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/testing/Log_To_String.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/testing/Logging.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/testing/Patch_Print.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/testing/Profiler.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/testing/Pytest.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/testing/Temp_Env_Vars.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/testing/Temp_File.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/testing/Temp_Folder.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/testing/Temp_Sys_Path.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/testing/Temp_Web_Server.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/testing/Temp_Zip.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/testing/Temp_Zip_In_Memory.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/testing/Unit_Test.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/testing/Unzip_File.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/testing/__init__.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Assert.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Call_Stack.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Csv.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Dev.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Exceptions.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Files.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Functions.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Http.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Int.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Json.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Json_Cache.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Lists.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Misc.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Objects.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Png.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Process.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Python_Logger.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Regex.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Status.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Str.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Toml.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Version.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/utils/Zip.py +0 -0
- {osbot_utils-1.36.0 → osbot_utils-1.37.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.37.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,5 +1,6 @@
|
|
1
1
|
import linecache
|
2
2
|
import sys
|
3
|
+
import threading
|
3
4
|
from functools import wraps
|
4
5
|
|
5
6
|
from osbot_utils.base_classes.Kwargs_To_Self import Kwargs_To_Self
|
@@ -8,6 +9,8 @@ from osbot_utils.helpers.trace.Trace_Call__Handler import Trace_Call__H
|
|
8
9
|
from osbot_utils.helpers.trace.Trace_Call__Print_Lines import Trace_Call__Print_Lines
|
9
10
|
from osbot_utils.helpers.trace.Trace_Call__Print_Traces import Trace_Call__Print_Traces
|
10
11
|
from osbot_utils.helpers.trace.Trace_Call__View_Model import Trace_Call__View_Model
|
12
|
+
from osbot_utils.testing.Stdout import Stdout
|
13
|
+
from osbot_utils.utils.Str import ansi_to_text
|
11
14
|
|
12
15
|
|
13
16
|
def trace_calls(title = None , print_traces = True , show_locals = False, source_code = False ,
|
@@ -59,6 +62,7 @@ class Trace_Call(Kwargs_To_Self):
|
|
59
62
|
self.config.trace_capture_contains = self.config.trace_capture_contains or [] # and None will be quite common since we can use [] on method's params
|
60
63
|
self.config.print_max_string_length = self.config.print_max_string_length or PRINT_MAX_STRING_LENGTH
|
61
64
|
self.stack = self.trace_call_handler.stack
|
65
|
+
self.trace_on_thread__data = {}
|
62
66
|
#self.prev_trace_function = None # Stores the previous trace function
|
63
67
|
|
64
68
|
|
@@ -94,6 +98,13 @@ class Trace_Call(Kwargs_To_Self):
|
|
94
98
|
#self.print_lines()
|
95
99
|
return view_model
|
96
100
|
|
101
|
+
def print_to_str(self):
|
102
|
+
with Stdout() as stdout:
|
103
|
+
self.print()
|
104
|
+
trace_data = ansi_to_text(stdout.value())
|
105
|
+
return trace_data
|
106
|
+
|
107
|
+
|
97
108
|
def print_lines(self):
|
98
109
|
print()
|
99
110
|
view_model = self.view_data()
|
@@ -106,6 +117,27 @@ class Trace_Call(Kwargs_To_Self):
|
|
106
117
|
self.started = True # set this here so that it does show in the trace
|
107
118
|
sys.settrace(self.trace_call_handler.trace_calls) # Set the new trace function
|
108
119
|
|
120
|
+
def start__on_thread(self, root_node=None):
|
121
|
+
if sys.gettrace() is None:
|
122
|
+
current_thread = threading.current_thread()
|
123
|
+
thread_sys_trace = sys.gettrace()
|
124
|
+
thread_name = current_thread.name
|
125
|
+
thread_id = current_thread.native_id
|
126
|
+
thread_nodes = []
|
127
|
+
thread_data = dict(thread_name = thread_name ,
|
128
|
+
thread_id = thread_id ,
|
129
|
+
thread_nodes = thread_nodes ,
|
130
|
+
thread_sys_trace = thread_sys_trace)
|
131
|
+
title = f"Thread: {thread_name} ({thread_id})"
|
132
|
+
thread_node__for_title = self.trace_call_handler.stack.add_node(title=title) # Add node with name of Thread
|
133
|
+
|
134
|
+
if root_node: # Add node with name of node
|
135
|
+
thread_node__for_root = self.trace_call_handler.stack.add_node(root_node)
|
136
|
+
thread_nodes.append(thread_node__for_root)
|
137
|
+
thread_nodes.append(thread_node__for_title)
|
138
|
+
sys.settrace(self.trace_call_handler.trace_calls)
|
139
|
+
self.trace_on_thread__data[thread_id] = thread_data
|
140
|
+
|
109
141
|
|
110
142
|
def stop(self):
|
111
143
|
if self.started:
|
@@ -113,6 +145,18 @@ class Trace_Call(Kwargs_To_Self):
|
|
113
145
|
self.stack.empty_stack()
|
114
146
|
self.started = False
|
115
147
|
|
148
|
+
def stop__on_thread(self):
|
149
|
+
current_thread = threading.current_thread()
|
150
|
+
thread_id = current_thread.native_id
|
151
|
+
thread_data = self.trace_on_thread__data.get(thread_id)
|
152
|
+
if thread_data: # if there trace_call set up in the current thread
|
153
|
+
thread_sys_trace = thread_data.get('thread_sys_trace')
|
154
|
+
thread_nodes = thread_data.get('thread_nodes')
|
155
|
+
for thread_node in thread_nodes: # remove extra nodes added during start__on_thread
|
156
|
+
self.trace_call_handler.stack.pop(thread_node)
|
157
|
+
sys.settrace(thread_sys_trace) # restore previous sys.trace value
|
158
|
+
del self.trace_on_thread__data[thread_id]
|
159
|
+
|
116
160
|
def stats(self):
|
117
161
|
return self.trace_call_handler.stats
|
118
162
|
|
@@ -33,6 +33,7 @@ class Trace_Call__Config(Kwargs_To_Self):
|
|
33
33
|
trace_capture_contains : list
|
34
34
|
trace_enabled : bool = True
|
35
35
|
trace_ignore_start_with : list
|
36
|
+
trace_ignore_contains : list
|
36
37
|
trace_show_internals : bool
|
37
38
|
trace_up_to_depth : int
|
38
39
|
with_duration_bigger_than : float
|
@@ -20,11 +20,19 @@ GLOBAL_FUNCTIONS_TO_IGNORE = ['value_type_matches_obj_annotation_for_attr'
|
|
20
20
|
'__default__value__' ,
|
21
21
|
'__setattr__' ,
|
22
22
|
'<module>']
|
23
|
-
GLOBAL_MODULES_TO_IGNORE = ['osbot_utils.helpers.trace.Trace_Call'
|
24
|
-
'osbot_utils.helpers.
|
25
|
-
'osbot_utils.helpers.
|
26
|
-
'osbot_utils.
|
27
|
-
'
|
23
|
+
GLOBAL_MODULES_TO_IGNORE = ['osbot_utils.helpers.trace.Trace_Call' , # todo: map out and document why exactly these modules are ignore (and what is the side effect)
|
24
|
+
'osbot_utils.helpers.trace.Trace_Call__Config' ,
|
25
|
+
'osbot_utils.helpers.trace.Trace_Call__View_Model' ,
|
26
|
+
'osbot_utils.helpers.trace.Trace_Call__Print_Traces' ,
|
27
|
+
'osbot_utils.helpers.trace.Trace_Call__Stack' ,
|
28
|
+
'osbot_utils.base_classes.Type_Safe' ,
|
29
|
+
'osbot_utils.helpers.CPrint' , # also see if this should be done here or at the print/view stage
|
30
|
+
'osbot_utils.helpers.Print_Table' ,
|
31
|
+
'osbot_utils.decorators.methods.cache_on_self' ,
|
32
|
+
'codecs' ]
|
33
|
+
|
34
|
+
#GLOBAL_MODULES_TO_IGNORE = []
|
35
|
+
#GLOBAL_FUNCTIONS_TO_IGNORE = []
|
28
36
|
|
29
37
|
class Trace_Call__Handler(Kwargs_To_Self):
|
30
38
|
config : Trace_Call__Config
|
@@ -171,6 +179,11 @@ class Trace_Call__Handler(Kwargs_To_Self):
|
|
171
179
|
if module.startswith(item) or func_name.startswith(item):
|
172
180
|
capture = False
|
173
181
|
break
|
182
|
+
|
183
|
+
for item in self.config.trace_ignore_contains: # Check if the module should be ignored
|
184
|
+
if item in module or item in func_name:
|
185
|
+
capture = False
|
186
|
+
break
|
174
187
|
return capture
|
175
188
|
|
176
189
|
def stack_json__parse_node(self, stack_node: Trace_Call__Stack_Node):
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import io
|
2
|
+
from contextlib import redirect_stderr
|
3
|
+
|
4
|
+
|
5
|
+
class Stderr: # todo: refactor with Stdout whose code is 90% the same as this one. Add class to capture both at the same time
|
6
|
+
def __init__(self):
|
7
|
+
self.output = io.StringIO()
|
8
|
+
self.redirect_stderr = redirect_stderr(self.output)
|
9
|
+
|
10
|
+
def __enter__(self):
|
11
|
+
self.start()
|
12
|
+
return self
|
13
|
+
|
14
|
+
def __exit__(self, *args, **kwargs):
|
15
|
+
self.stop(*args, **kwargs)
|
16
|
+
|
17
|
+
def start(self):
|
18
|
+
self.redirect_stderr.__enter__()
|
19
|
+
|
20
|
+
def stop(self, exc_type=None, exc_inst=None, exc_tb=None):
|
21
|
+
self.redirect_stderr.__exit__(exc_type, exc_inst, exc_tb)
|
22
|
+
|
23
|
+
def value(self):
|
24
|
+
return self.output.getvalue()
|
25
|
+
|
@@ -8,11 +8,17 @@ class Stdout:
|
|
8
8
|
self.redirect_stdout = redirect_stdout(self.output)
|
9
9
|
|
10
10
|
def __enter__(self):
|
11
|
-
self.
|
11
|
+
self.start()
|
12
12
|
return self
|
13
13
|
|
14
|
-
def __exit__(self,
|
15
|
-
self.
|
14
|
+
def __exit__(self, *args, **kwargs):
|
15
|
+
self.stop(*args, **kwargs)
|
16
|
+
|
17
|
+
def start(self):
|
18
|
+
self.redirect_stdout.__enter__()
|
19
|
+
|
20
|
+
def stop(self, exc_type=None, exc_inst=None, exc_tb=None):
|
21
|
+
self.redirect_stdout.__exit__(exc_type, exc_inst, exc_tb)
|
16
22
|
|
17
23
|
def value(self):
|
18
24
|
return self.output.getvalue()
|
@@ -20,7 +20,9 @@ def env__pwd():
|
|
20
20
|
return get_env('PWD', '')
|
21
21
|
|
22
22
|
def env__old_pwd__remove(value):
|
23
|
-
|
23
|
+
if env__old_pwd() != '/': # can't replace with old pwd is just /
|
24
|
+
return value.replace(env__old_pwd(), '')
|
25
|
+
return value
|
24
26
|
|
25
27
|
def env__terminal__is__xterm():
|
26
28
|
return os.getenv('TERM') == 'xterm'
|
@@ -91,6 +93,9 @@ def find_dotenv_file(start_path=None, env_file_to_find='.env'):
|
|
91
93
|
def in_github_action():
|
92
94
|
return os.getenv('GITHUB_ACTIONS') == 'true'
|
93
95
|
|
96
|
+
def in_pytest_with_coverage():
|
97
|
+
return os.getenv('COVERAGE_RUN') == 'true'
|
98
|
+
|
94
99
|
def in_python_debugger():
|
95
100
|
if sys.gettrace() is not None: # Check for a trace function
|
96
101
|
return True
|
@@ -0,0 +1 @@
|
|
1
|
+
v1.37.0
|
@@ -1,19 +0,0 @@
|
|
1
|
-
import io
|
2
|
-
from contextlib import redirect_stderr
|
3
|
-
|
4
|
-
|
5
|
-
class Stderr:
|
6
|
-
def __init__(self):
|
7
|
-
self.output = io.StringIO()
|
8
|
-
self.redirect_stderr = redirect_stderr(self.output)
|
9
|
-
|
10
|
-
def __enter__(self):
|
11
|
-
self.redirect_stderr.__enter__()
|
12
|
-
return self
|
13
|
-
|
14
|
-
def __exit__(self, exc_type, exc_val, exc_tb):
|
15
|
-
self.redirect_stderr.__exit__(exc_type, exc_val, exc_tb)
|
16
|
-
|
17
|
-
def value(self):
|
18
|
-
return self.output.getvalue()
|
19
|
-
|
@@ -1 +0,0 @@
|
|
1
|
-
v1.36.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
|
{osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/context_managers/disable_root_loggers.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-1.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/methods/cache_on_function.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-1.36.0 → osbot_utils-1.37.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.36.0 → osbot_utils-1.37.0}/osbot_utils/decorators/methods/function_type_check.py
RENAMED
File without changes
|
File without changes
|
{osbot_utils-1.36.0 → osbot_utils-1.37.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.36.0 → osbot_utils-1.37.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.36.0 → osbot_utils-1.37.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
|
{osbot_utils-1.36.0 → osbot_utils-1.37.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.36.0 → osbot_utils-1.37.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.36.0 → osbot_utils-1.37.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
|