osbot-utils 1.92.0__tar.gz → 1.93.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.92.0 → osbot_utils-1.93.0}/PKG-INFO +2 -2
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/README.md +1 -1
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/base_classes/Type_Safe.py +28 -7
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/mermaid/Mermaid__Node.py +3 -7
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/mermaid/Mermaid__Renderer.py +1 -1
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/Safe_Id.py +3 -1
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Json.py +1 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Objects.py +0 -2
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Str.py +1 -1
- osbot_utils-1.93.0/osbot_utils/version +1 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/pyproject.toml +1 -1
- osbot_utils-1.92.0/osbot_utils/version +0 -1
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/LICENSE +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/base_classes/Cache_Pickle.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/base_classes/Kwargs_To_Disk.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/base_classes/Kwargs_To_Self.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/base_classes/Type_Safe__Base.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/base_classes/Type_Safe__Dict.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/base_classes/Type_Safe__List.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/base_classes/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/context_managers/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/context_managers/async_invoke.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/context_managers/capture_duration.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/context_managers/disable_root_loggers.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/context_managers/print_duration.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/classes/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/classes/singleton.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/lists/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/lists/filter_list.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/lists/group_by.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/lists/index_by.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/methods/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/methods/cache.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/methods/cache_on_function.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/methods/cache_on_self.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/methods/cache_on_tmp.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/methods/capture_exception.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/methods/capture_status.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/methods/catch.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/methods/context.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/methods/depreciated.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/methods/function_type_check.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/methods/obj_as_context.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/methods/remove_return_value.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/methods/required_fields.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/methods/type_safe.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/fluent/Fluent_Dict.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/fluent/Fluent_List.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/fluent/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/mermaid/Mermaid.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/mermaid/Mermaid__Edge.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/mermaid/Mermaid__Graph.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/mermaid/configs/Mermaid__Edge__Config.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/mermaid/configs/Mermaid__Node__Config.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/mermaid/configs/Mermaid__Render__Config.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/mermaid/examples/Mermaid_Examples__FlowChart.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/mermaid/models/Mermaid__Diagram_Direction.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/mermaid/models/Mermaid__Diagram__Type.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/mermaid/models/Mermaid__Node__Shape.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/mgraph/MGraph.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/mgraph/MGraph__Config.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/mgraph/MGraph__Data.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/mgraph/MGraph__Edge.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/mgraph/MGraph__Node.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/mgraph/MGraph__Random_Graphs.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/mgraph/MGraph__Serializer.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/mgraph/MGraphs.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/graphs/mgraph/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/CFormat.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/CPrint.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/Dependency_Manager.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/Dict_To_Attr.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/Guid.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/Hashicorp_Secrets.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/Local_Cache.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/Local_Caches.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/Print_Table.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/Python_Audit.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/Random_Guid.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/Random_Guid_Short.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/Random_Seed.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/Str_ASCII.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/Timestamp_Now.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/Type_Registry.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/Type_Safe_Method.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/Zip_Bytes.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/Ast.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/Ast_Base.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/Ast_Data.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/Ast_Load.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/Ast_Merge.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/Ast_Node.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/Ast_Visit.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/Call_Tree.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Add.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Alias.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_And.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Argument.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Arguments.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Assert.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Assign.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Attribute.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Aug_Assign.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Bin_Op.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Bool_Op.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Break.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Call.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Class_Def.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Compare.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Comprehension.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Constant.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Continue.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Dict.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Eq.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Except_Handler.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Expr.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_For.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Function_Def.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Generator_Exp.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Gt.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_GtE.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_If.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_If_Exp.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Import.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Import_From.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_In.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Is.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Is_Not.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Keyword.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Lambda.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_List.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_List_Comp.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Load.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Lt.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_LtE.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Mod.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Module.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Mult.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Name.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Not.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Not_Eq.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Not_In.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Or.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Pass.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Pow.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Raise.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Return.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Set.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Slice.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Starred.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Store.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Sub.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Subscript.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Try.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Tuple.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Unary_Op.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_While.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_With.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_With_Item.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/Ast_Yield.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ast/nodes/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Actions.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Config.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Data.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Invoke.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Row.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Table.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/cache_requests/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/cache_requests/flows/flow__Cache__Requests.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/flows/Flow.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/flows/Flow__Events.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/flows/Task.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/flows/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/flows/decorators/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/flows/decorators/flow.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/flows/decorators/task.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/flows/models/Flow_Run__Config.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/flows/models/Flow_Run__Event.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Data.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Type.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/flows/models/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/generators/Generator_Context_Manager.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/generators/Generator_Manager.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/generators/Model__Generator_State.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/generators/Model__Generator_Target.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/generators/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/html/Dict_To_Css.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/html/Dict_To_Html.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/html/Dict_To_Tags.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/html/Html_To_Dict.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/html/Html_To_Tag.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/html/Tag__Base.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/html/Tag__Body.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/html/Tag__Div.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/html/Tag__H.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/html/Tag__HR.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/html/Tag__Head.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/html/Tag__Html.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/html/Tag__Link.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/html/Tag__Style.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/html/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/pubsub/Event__Queue.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/pubsub/PubSub__Client.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/pubsub/PubSub__Room.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/pubsub/PubSub__Server.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/pubsub/PubSub__Sqlite.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/pubsub/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Connect.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Disconnect.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Execute_Method.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Join_Room.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Leave_Room.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Message.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/pubsub/schemas/Schema__PubSub__Client.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/pubsub/schemas/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/python_compatibility/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/python_compatibility/python_3_8.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/Capture_Sqlite_Error.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/Sqlite__Cursor.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/Sqlite__Database.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/Sqlite__Field.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/Sqlite__Globals.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/Sqlite__Table.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/Sqlite__Table__Create.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Database__Disk.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Table.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/cache/Schema__Table__Requests.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Patch.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Sqlite.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Table.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/cache/Sqlite__DB__Requests.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/cache/TestCase__Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/cache/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Files.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Graph.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Json.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Local.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/domains/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/domains/schemas/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/models/Sqlite__Field__Type.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/models/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/sample_data/Sqlite__Sample_Data__Chinook.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/sample_data/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder__Select.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/sql_builder/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Config.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Edges.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Files.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Nodes.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/sqlite/tables/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ssh/SCP.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ssh/SSH.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ssh/SSH__Cache__Requests.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ssh/SSH__Execute.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ssh/SSH__Health_Check.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ssh/SSH__Linux.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ssh/SSH__Linux__Amazon.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ssh/SSH__Python.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ssh/TestCase__SSH.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/ssh/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/trace/Trace_Call.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/trace/Trace_Call__Config.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/trace/Trace_Call__Graph.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/trace/Trace_Call__Handler.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/trace/Trace_Call__Print_Lines.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/trace/Trace_Call__Print_Traces.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/trace/Trace_Call__Stack.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/trace/Trace_Call__Stack_Node.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/trace/Trace_Call__Stats.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/trace/Trace_Call__View_Model.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/trace/Trace_Files.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/trace/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/type_safe/Type_Safe__Validator.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/type_safe/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/type_safe/validators/Validator__Max.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/type_safe/validators/Validator__Min.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/type_safe/validators/Validator__One_Of.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/type_safe/validators/Validator__Regex.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/type_safe/validators/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/xml/Xml__Attribute.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/xml/Xml__Element.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/xml/Xml__File.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/xml/Xml__File__Load.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/xml/Xml__File__To_Dict.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/xml/Xml__File__To_Xml.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/xml/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/xml/rss/RSS__Channel.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/xml/rss/RSS__Enclosure.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/xml/rss/RSS__Feed.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/xml/rss/RSS__Feed__Parser.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/xml/rss/RSS__Image.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/helpers/xml/rss/RSS__Item.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/Catch.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/Custom_Handler_For_Http_Tests.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/Duration.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/Hook_Method.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/Log_To_Queue.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/Log_To_String.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/Logging.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/Patch_Print.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/Profiler.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/Pytest.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/Stderr.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/Stdout.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/Temp_Env_Vars.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/Temp_File.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/Temp_Folder.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/Temp_Sys_Path.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/Temp_Web_Server.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/Temp_Zip.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/Temp_Zip_In_Memory.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/Unit_Test.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/Unzip_File.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/testing/__init__.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Assert.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Call_Stack.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Csv.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Dev.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Env.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Exceptions.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Files.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Functions.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Http.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Int.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Json_Cache.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Lists.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Misc.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Png.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Process.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Python_Logger.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Regex.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Status.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Threads.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Toml.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Version.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.0}/osbot_utils/utils/Zip.py +0 -0
- {osbot_utils-1.92.0 → osbot_utils-1.93.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.93.0
|
4
4
|
Summary: OWASP Security Bot - Utils
|
5
5
|
Home-page: https://github.com/owasp-sbot/OSBot-Utils
|
6
6
|
License: MIT
|
@@ -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,7 +3,7 @@
|
|
3
3
|
|
4
4
|
import sys
|
5
5
|
import types
|
6
|
-
from osbot_utils.utils.Objects
|
6
|
+
from osbot_utils.utils.Objects import default_value # todo: remove test mocking requirement for this to be here (instead of on the respective method)
|
7
7
|
|
8
8
|
# Backport implementations of get_origin and get_args for Python 3.7
|
9
9
|
if sys.version_info < (3, 8): # pragma: no cover
|
@@ -95,8 +95,12 @@ class Type_Safe:
|
|
95
95
|
if value is not None:
|
96
96
|
if type(value) is dict:
|
97
97
|
value = convert_dict_to_value_from_obj_annotation(self, name, value)
|
98
|
-
|
98
|
+
elif type(value) in [int, str]: # for now only a small number of str and int classes are supported (until we understand the full implications of this)
|
99
99
|
value = convert_to_value_from_obj_annotation (self, name, value)
|
100
|
+
else:
|
101
|
+
origin = get_origin(value)
|
102
|
+
if origin is not None:
|
103
|
+
value = origin
|
100
104
|
check_1 = value_type_matches_obj_annotation_for_attr (self, name, value)
|
101
105
|
check_2 = value_type_matches_obj_annotation_for_union_and_annotated(self, name, value)
|
102
106
|
if (check_1 is False and check_2 is None or
|
@@ -169,7 +173,7 @@ class Type_Safe:
|
|
169
173
|
#todo: fix type safety bug that I believe is caused here
|
170
174
|
if obj_is_type_union_compatible(var_type, IMMUTABLE_TYPES) is False: # if var_type is not something like Optional[Union[int, str]]
|
171
175
|
if type(var_type) not in IMMUTABLE_TYPES:
|
172
|
-
exception_message = f"variable '{var_name}' is defined as type '{var_type}' which is not supported by
|
176
|
+
exception_message = f"variable '{var_name}' is defined as type '{var_type}' which is not supported by Type_Safe, with only the following immutable types being supported: '{IMMUTABLE_TYPES}'"
|
173
177
|
raise ValueError(exception_message)
|
174
178
|
if include_base_classes is False:
|
175
179
|
break
|
@@ -304,6 +308,19 @@ class Type_Safe:
|
|
304
308
|
setattr(self, key, value)
|
305
309
|
return self
|
306
310
|
|
311
|
+
def deserialize_type__using_value(self, value):
|
312
|
+
if value:
|
313
|
+
try:
|
314
|
+
module_name, type_name = value.rsplit('.', 1)
|
315
|
+
if module_name == 'builtins' and type_name == 'NoneType': # Special case for NoneType (which serialises as builtins.* , but it actually in types.* )
|
316
|
+
value = types.NoneType
|
317
|
+
else:
|
318
|
+
module = __import__(module_name, fromlist=[type_name])
|
319
|
+
value = getattr(module, type_name)
|
320
|
+
except (ValueError, ImportError, AttributeError) as e:
|
321
|
+
raise ValueError(f"Could not reconstruct type from '{value}': {str(e)}")
|
322
|
+
return value
|
323
|
+
|
307
324
|
def deserialize_dict__using_key_value_annotations(self, key, value):
|
308
325
|
from osbot_utils.base_classes.Type_Safe__Dict import Type_Safe__Dict
|
309
326
|
|
@@ -353,7 +370,9 @@ class Type_Safe:
|
|
353
370
|
raise ValueError(f"Attribute '{key}' not found in '{self.__class__.__name__}'")
|
354
371
|
else:
|
355
372
|
continue
|
356
|
-
if
|
373
|
+
if obj_attribute_annotation(self, key) == type: # Handle type objects
|
374
|
+
value = self.deserialize_type__using_value(value)
|
375
|
+
elif obj_is_attribute_annotation_of_type(self, key, dict): # handle the case when the value is a dict
|
357
376
|
value = self.deserialize_dict__using_key_value_annotations(key, value)
|
358
377
|
elif obj_is_attribute_annotation_of_type(self, key, list): # handle the case when the value is a list
|
359
378
|
attribute_annotation = obj_attribute_annotation(self, key) # get the annotation for this variable
|
@@ -423,15 +442,17 @@ def serialize_to_dict(obj):
|
|
423
442
|
return obj
|
424
443
|
elif isinstance(obj, Enum):
|
425
444
|
return obj.name
|
445
|
+
elif isinstance(obj, type):
|
446
|
+
return f"{obj.__module__}.{obj.__name__}" # save the full type name
|
426
447
|
elif isinstance(obj, list) or isinstance(obj, List):
|
427
448
|
return [serialize_to_dict(item) for item in obj]
|
428
449
|
elif isinstance(obj, dict):
|
429
450
|
return {key: serialize_to_dict(value) for key, value in obj.items()}
|
430
451
|
elif hasattr(obj, "__dict__"):
|
431
|
-
data = {}
|
452
|
+
data = {} # todo: look at a more advanced version which saved the type of the object, for example with {'__type__': type(obj).__name__}
|
432
453
|
for key, value in obj.__dict__.items():
|
433
|
-
if key.startswith('__') is False:
|
434
|
-
data[key] = serialize_to_dict(value)
|
454
|
+
if key.startswith('__') is False: # don't process internal variables (for example the ones set by @cache_on_self)
|
455
|
+
data[key] = serialize_to_dict(value) # Recursive call for complex types
|
435
456
|
return data
|
436
457
|
else:
|
437
458
|
raise TypeError(f"Type {type(obj)} not serializable")
|
@@ -1,10 +1,6 @@
|
|
1
|
-
from
|
2
|
-
|
3
|
-
from osbot_utils.
|
4
|
-
from osbot_utils.graphs.mermaid.configs.Mermaid__Node__Config import Mermaid__Node__Config
|
5
|
-
from osbot_utils.graphs.mermaid.models.Mermaid__Node__Shape import Mermaid__Node__Shape
|
6
|
-
from osbot_utils.graphs.mgraph.MGraph__Node import MGraph__Node
|
7
|
-
from osbot_utils.utils.Str import safe_str
|
1
|
+
from osbot_utils.graphs.mermaid.configs.Mermaid__Node__Config import Mermaid__Node__Config
|
2
|
+
from osbot_utils.graphs.mermaid.models.Mermaid__Node__Shape import Mermaid__Node__Shape
|
3
|
+
from osbot_utils.graphs.mgraph.MGraph__Node import MGraph__Node
|
8
4
|
|
9
5
|
LINE_PADDING = ' '
|
10
6
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
from typing import List
|
2
2
|
|
3
3
|
from osbot_utils.base_classes.Kwargs_To_Self import Kwargs_To_Self
|
4
|
-
from osbot_utils.graphs.mermaid.configs.Mermaid__Render__Config
|
4
|
+
from osbot_utils.graphs.mermaid.configs.Mermaid__Render__Config import Mermaid__Render__Config
|
5
5
|
from osbot_utils.graphs.mermaid.models.Mermaid__Diagram_Direction import Diagram__Direction
|
6
6
|
from osbot_utils.graphs.mermaid.models.Mermaid__Diagram__Type import Diagram__Type
|
7
7
|
|
@@ -1,8 +1,10 @@
|
|
1
1
|
from osbot_utils.utils.Misc import random_id_short
|
2
2
|
from osbot_utils.utils.Str import safe_id
|
3
3
|
|
4
|
+
SAFE_ID__MAX_LENGTH = 512
|
5
|
+
|
4
6
|
class Safe_Id(str):
|
5
|
-
def __new__(cls, value=None, max_length=
|
7
|
+
def __new__(cls, value=None, max_length=SAFE_ID__MAX_LENGTH):
|
6
8
|
if value is None:
|
7
9
|
value = safe_id(random_id_short('safe-id'))
|
8
10
|
sanitized_value = safe_id(value, max_length=max_length)
|
@@ -193,6 +193,7 @@ json_save_file_gz = Json.save_file_gz
|
|
193
193
|
json_save_file_pretty_gz = Json.save_file_pretty_gz
|
194
194
|
json_save_tmp_file = Json.json_save_tmp_file
|
195
195
|
str_to_json = Json.loads
|
196
|
+
str_from_json = json_dumps
|
196
197
|
|
197
198
|
load_file_json = json_load_file
|
198
199
|
load_file_json_gz = json_load_file_gz
|
@@ -359,8 +359,6 @@ def obj_attribute_annotation(target, attr_name):
|
|
359
359
|
|
360
360
|
def obj_is_attribute_annotation_of_type(target, attr_name, expected_type):
|
361
361
|
attribute_annotation = obj_attribute_annotation(target, attr_name)
|
362
|
-
#attribute_type = type(attribute_annotation)
|
363
|
-
#return attribute_type is expected_type
|
364
362
|
if expected_type is attribute_annotation:
|
365
363
|
return True
|
366
364
|
if expected_type is type(attribute_annotation):
|
@@ -42,7 +42,7 @@ def safe_id(value, max_length=36):
|
|
42
42
|
value = str(value)
|
43
43
|
|
44
44
|
if len(value) > max_length:
|
45
|
-
raise ValueError(f"Invalid ID: The ID must not exceed
|
45
|
+
raise ValueError(f"Invalid ID: The ID must not exceed {max_length} characters (was {len(value)}).")
|
46
46
|
|
47
47
|
sanitized_value = REGEX__SAFE_ID_REGEX.sub('_', value)
|
48
48
|
|
@@ -0,0 +1 @@
|
|
1
|
+
v1.93.0
|
@@ -1 +0,0 @@
|
|
1
|
-
v1.92.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
|
File without changes
|
{osbot_utils-1.92.0 → osbot_utils-1.93.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.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/methods/cache_on_function.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-1.92.0 → osbot_utils-1.93.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.92.0 → osbot_utils-1.93.0}/osbot_utils/decorators/methods/function_type_check.py
RENAMED
File without changes
|
File without changes
|
{osbot_utils-1.92.0 → osbot_utils-1.93.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
|
{osbot_utils-1.92.0 → osbot_utils-1.93.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.92.0 → osbot_utils-1.93.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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-1.92.0 → osbot_utils-1.93.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.92.0 → osbot_utils-1.93.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.92.0 → osbot_utils-1.93.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
|
File without changes
|
File without changes
|