osbot-utils 1.70.0__tar.gz → 1.73.1__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.70.0 → osbot_utils-1.73.1}/PKG-INFO +2 -2
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/README.md +1 -1
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/base_classes/Type_Safe.py +53 -17
- osbot_utils-1.73.1/osbot_utils/helpers/Safe_Id.py +12 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Misc.py +4 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Objects.py +4 -1
- osbot_utils-1.73.1/osbot_utils/version +1 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/pyproject.toml +1 -1
- osbot_utils-1.70.0/osbot_utils/helpers/Safe_Id.py +0 -9
- osbot_utils-1.70.0/osbot_utils/version +0 -1
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/LICENSE +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/base_classes/Cache_Pickle.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/base_classes/Kwargs_To_Disk.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/base_classes/Kwargs_To_Self.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/base_classes/Type_Safe__List.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/base_classes/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/context_managers/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/context_managers/async_invoke.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/context_managers/capture_duration.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/context_managers/disable_root_loggers.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/context_managers/print_duration.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/classes/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/classes/singleton.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/lists/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/lists/filter_list.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/lists/group_by.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/lists/index_by.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/methods/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/methods/cache.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/methods/cache_on_function.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/methods/cache_on_self.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/methods/cache_on_tmp.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/methods/capture_exception.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/methods/capture_status.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/methods/catch.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/methods/context.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/methods/depreciated.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/methods/function_type_check.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/methods/obj_as_context.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/methods/remove_return_value.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/methods/required_fields.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/fluent/Fluent_Dict.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/fluent/Fluent_List.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/fluent/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/mermaid/Mermaid.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/mermaid/Mermaid__Edge.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/mermaid/Mermaid__Graph.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/mermaid/Mermaid__Node.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/mermaid/Mermaid__Renderer.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/mermaid/configs/Mermaid__Edge__Config.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/mermaid/configs/Mermaid__Node__Config.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/mermaid/configs/Mermaid__Render__Config.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/mermaid/examples/Mermaid_Examples__FlowChart.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/mermaid/models/Mermaid__Diagram_Direction.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/mermaid/models/Mermaid__Diagram__Type.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/mermaid/models/Mermaid__Node__Shape.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/mgraph/MGraph.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/mgraph/MGraph__Config.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/mgraph/MGraph__Data.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/mgraph/MGraph__Edge.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/mgraph/MGraph__Node.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/mgraph/MGraph__Random_Graphs.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/mgraph/MGraph__Serializer.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/mgraph/MGraphs.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/graphs/mgraph/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/CFormat.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/CPrint.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/Dependency_Manager.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/Dict_To_Attr.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/Hashicorp_Secrets.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/Local_Cache.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/Local_Caches.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/Print_Table.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/Python_Audit.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/Random_Guid.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/Random_Guid_Short.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/Random_Seed.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/Timestamp_Now.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/Type_Registry.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/Zip_Bytes.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/Ast.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/Ast_Base.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/Ast_Data.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/Ast_Load.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/Ast_Merge.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/Ast_Node.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/Ast_Visit.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/Call_Tree.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Add.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Alias.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_And.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Argument.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Arguments.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Assert.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Assign.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Attribute.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Aug_Assign.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Bin_Op.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Bool_Op.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Break.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Call.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Class_Def.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Compare.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Comprehension.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Constant.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Continue.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Dict.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Eq.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Except_Handler.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Expr.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_For.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Function_Def.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Generator_Exp.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Gt.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_GtE.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_If.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_If_Exp.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Import.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Import_From.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_In.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Is.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Is_Not.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Keyword.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Lambda.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_List.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_List_Comp.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Load.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Lt.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_LtE.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Mod.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Module.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Mult.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Name.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Not.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Not_Eq.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Not_In.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Or.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Pass.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Pow.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Raise.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Return.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Set.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Slice.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Starred.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Store.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Sub.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Subscript.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Try.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Tuple.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Unary_Op.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_While.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_With.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_With_Item.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/Ast_Yield.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ast/nodes/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/cache_requests/Cache__Requests__Actions.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/cache_requests/Cache__Requests__Config.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/cache_requests/Cache__Requests__Data.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/cache_requests/Cache__Requests__Invoke.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/cache_requests/Cache__Requests__Row.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/cache_requests/Cache__Requests__Table.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/cache_requests/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/cache_requests/flows/flow__Cache__Requests.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/flows/Flow.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/flows/Flow__Events.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/flows/Task.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/flows/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/flows/decorators/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/flows/decorators/flow.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/flows/decorators/task.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/flows/models/Flow_Run__Config.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/flows/models/Flow_Run__Event.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/flows/models/Flow_Run__Event_Data.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/flows/models/Flow_Run__Event_Type.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/flows/models/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/html/Dict_To_Css.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/html/Dict_To_Html.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/html/Dict_To_Tags.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/html/Html_To_Dict.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/html/Html_To_Tag.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/html/Tag__Base.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/html/Tag__Body.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/html/Tag__Div.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/html/Tag__H.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/html/Tag__HR.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/html/Tag__Head.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/html/Tag__Html.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/html/Tag__Link.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/html/Tag__Style.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/html/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/pubsub/Event__Queue.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/pubsub/PubSub__Client.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/pubsub/PubSub__Room.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/pubsub/PubSub__Server.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/pubsub/PubSub__Sqlite.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/pubsub/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/pubsub/schemas/Schema__Event.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Connect.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Disconnect.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Execute_Method.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Join_Room.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Leave_Room.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Message.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/pubsub/schemas/Schema__PubSub__Client.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/pubsub/schemas/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/Capture_Sqlite_Error.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/Sqlite__Cursor.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/Sqlite__Database.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/Sqlite__Field.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/Sqlite__Globals.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/Sqlite__Table.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/Sqlite__Table__Create.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/Temp_Sqlite__Database__Disk.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/Temp_Sqlite__Table.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/cache/Schema__Table__Requests.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Patch.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Sqlite.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Table.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/cache/Sqlite__DB__Requests.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/cache/TestCase__Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/cache/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/domains/Sqlite__DB.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Files.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Graph.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Json.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Local.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/domains/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/domains/schemas/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/models/Sqlite__Field__Type.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/models/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/sample_data/Sqlite__Sample_Data__Chinook.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/sample_data/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder__Select.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/sql_builder/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Config.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Edges.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Files.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Nodes.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/sqlite/tables/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ssh/SCP.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ssh/SSH.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ssh/SSH__Cache__Requests.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ssh/SSH__Execute.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ssh/SSH__Health_Check.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ssh/SSH__Linux.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ssh/SSH__Linux__Amazon.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ssh/SSH__Python.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ssh/TestCase__SSH.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/ssh/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/trace/Trace_Call.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/trace/Trace_Call__Config.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/trace/Trace_Call__Graph.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/trace/Trace_Call__Handler.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/trace/Trace_Call__Print_Lines.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/trace/Trace_Call__Print_Traces.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/trace/Trace_Call__Stack.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/trace/Trace_Call__Stack_Node.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/trace/Trace_Call__Stats.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/trace/Trace_Call__View_Model.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/trace/Trace_Files.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/helpers/trace/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/Catch.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/Custom_Handler_For_Http_Tests.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/Duration.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/Hook_Method.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/Log_To_Queue.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/Log_To_String.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/Logging.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/Patch_Print.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/Profiler.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/Pytest.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/Stderr.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/Stdout.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/Temp_Env_Vars.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/Temp_File.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/Temp_Folder.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/Temp_Sys_Path.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/Temp_Web_Server.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/Temp_Zip.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/Temp_Zip_In_Memory.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/Unit_Test.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/Unzip_File.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/testing/__init__.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Assert.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Call_Stack.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Csv.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Dev.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Env.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Exceptions.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Files.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Functions.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Http.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Int.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Json.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Json_Cache.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Lists.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Png.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Process.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Python_Logger.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Regex.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Status.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Str.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Threads.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Toml.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Version.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/osbot_utils/utils/Zip.py +0 -0
- {osbot_utils-1.70.0 → osbot_utils-1.73.1}/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.73.1
|
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
|
|
@@ -12,6 +12,7 @@ from typing import List
|
|
12
12
|
from osbot_utils.base_classes.Type_Safe__List import Type_Safe__List
|
13
13
|
from osbot_utils.helpers.Random_Guid import Random_Guid
|
14
14
|
from osbot_utils.helpers.Random_Guid_Short import Random_Guid_Short
|
15
|
+
from osbot_utils.helpers.Safe_Id import Safe_Id
|
15
16
|
from osbot_utils.helpers.Timestamp_Now import Timestamp_Now
|
16
17
|
from osbot_utils.utils.Dev import pprint
|
17
18
|
from osbot_utils.utils.Json import json_parse, json_to_bytes, json_to_gz
|
@@ -248,28 +249,63 @@ class Type_Safe:
|
|
248
249
|
setattr(self, key, value)
|
249
250
|
return self
|
250
251
|
|
252
|
+
def deserialize_dict__using_key_value_annotations(self, key, value):
|
253
|
+
dict_annotations_tuple = get_args(self.__annotations__[key])
|
254
|
+
if not dict_annotations_tuple: # happens when the value is a dict/Dict with no annotations
|
255
|
+
return value
|
256
|
+
if not type(value) is dict:
|
257
|
+
return value
|
258
|
+
#key_class = get_args(self.__annotations__[key])[0]
|
259
|
+
#value_class = get_args(self.__annotations__[key])[1]
|
260
|
+
key_class = dict_annotations_tuple[0]
|
261
|
+
value_class = dict_annotations_tuple[1]
|
262
|
+
new_value = {}
|
263
|
+
|
264
|
+
for dict_key, dict_value in value.items():
|
265
|
+
if issubclass(key_class, Type_Safe):
|
266
|
+
new__dict_key = key_class().deserialize_from_dict(dict_key)
|
267
|
+
else:
|
268
|
+
new__dict_key = key_class(dict_key)
|
269
|
+
|
270
|
+
if issubclass(value_class, Type_Safe):
|
271
|
+
new__dict_value = value_class().deserialize_from_dict(dict_value)
|
272
|
+
else:
|
273
|
+
new__dict_value = value_class(dict_value)
|
274
|
+
new_value[new__dict_key] = new__dict_value
|
251
275
|
|
276
|
+
return new_value
|
277
|
+
|
278
|
+
# todo: this needs refactoring, since the logic and code is getting quite complex (to be inside methods like this)
|
252
279
|
def deserialize_from_dict(self, data):
|
280
|
+
|
253
281
|
for key, value in data.items():
|
254
282
|
if hasattr(self, key) and isinstance(getattr(self, key), Type_Safe):
|
255
|
-
getattr(self, key).deserialize_from_dict(value)
|
283
|
+
getattr(self, key).deserialize_from_dict(value) # if the attribute is a Type_Safe object, then also deserialize it
|
256
284
|
else:
|
257
|
-
if hasattr(self, '__annotations__'):
|
258
|
-
if
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
285
|
+
if hasattr(self, '__annotations__'): # can only do type safety checks if the class does not have annotations
|
286
|
+
if hasattr(self, key) is False: # make sure we are now adding new attributes to the class
|
287
|
+
raise ValueError(f"Attribute '{key}' not found in '{self.__class__.__name__}'")
|
288
|
+
if obj_is_attribute_annotation_of_type(self, key, dict): # handle the case when the value is a dict
|
289
|
+
value = self.deserialize_dict__using_key_value_annotations(key, value)
|
290
|
+
else:
|
291
|
+
if value is not None:
|
292
|
+
if obj_is_attribute_annotation_of_type(self, key, EnumMeta): # Handle the case when the value is an Enum
|
293
|
+
enum_type = getattr(self, '__annotations__').get(key)
|
294
|
+
if type(value) is not enum_type: # If the value is not already of the target type
|
295
|
+
value = enum_from_value(enum_type, value) # Try to resolve the value into the enum
|
296
|
+
|
297
|
+
# todo: refactor these special cases into a separate method to class
|
298
|
+
elif obj_is_attribute_annotation_of_type(self, key, Decimal): # handle Decimals
|
299
|
+
value = Decimal(value)
|
300
|
+
elif obj_is_attribute_annotation_of_type(self, key, Safe_Id): # handle Safe_Id
|
301
|
+
value = Safe_Id(value)
|
302
|
+
elif obj_is_attribute_annotation_of_type(self, key, Random_Guid): # handle Random_Guid
|
303
|
+
value = Random_Guid(value)
|
304
|
+
elif obj_is_attribute_annotation_of_type(self, key, Random_Guid_Short): # handle Random_Guid_Short
|
305
|
+
value = Random_Guid_Short(value)
|
306
|
+
elif obj_is_attribute_annotation_of_type(self, key, Timestamp_Now): # handle Timestamp_Now
|
307
|
+
value = Timestamp_Now(value)
|
308
|
+
setattr(self, key, value) # Direct assignment for primitive types and other structures
|
273
309
|
|
274
310
|
return self
|
275
311
|
|
@@ -0,0 +1,12 @@
|
|
1
|
+
from osbot_utils.utils.Misc import random_id_short
|
2
|
+
from osbot_utils.utils.Str import safe_id
|
3
|
+
|
4
|
+
class Safe_Id(str):
|
5
|
+
def __new__(cls, value=None):
|
6
|
+
if value is None:
|
7
|
+
value = safe_id(random_id_short('safe-id'))
|
8
|
+
sanitized_value = safe_id(value)
|
9
|
+
return str.__new__(cls, sanitized_value)
|
10
|
+
|
11
|
+
def __str__(self):
|
12
|
+
return self
|
@@ -379,6 +379,9 @@ def random_string(length:int=8, prefix:str='', postfix:str=''):
|
|
379
379
|
value = '_' + ''.join(random.choices(string.ascii_uppercase, k=length)).lower()
|
380
380
|
return f"{prefix}{value}{postfix}"
|
381
381
|
|
382
|
+
def random_string_short(prefix:str = None):
|
383
|
+
return random_id(prefix=prefix, length=6).lower()
|
384
|
+
|
382
385
|
def random_string_and_numbers(length:int=6,prefix:str=''):
|
383
386
|
return prefix + ''.join(random.choices(string.ascii_uppercase + string.digits, k=length))
|
384
387
|
|
@@ -508,6 +511,7 @@ str_lines = split_lines
|
|
508
511
|
str_remove = remove
|
509
512
|
|
510
513
|
random_id = random_string
|
514
|
+
random_id_short = random_string_short
|
511
515
|
random_int = random_number
|
512
516
|
random_guid = random_uuid
|
513
517
|
random_guid_short = random_uuid_short
|
@@ -8,12 +8,13 @@ import typing
|
|
8
8
|
from collections.abc import Mapping
|
9
9
|
from typing import Union
|
10
10
|
from types import SimpleNamespace
|
11
|
+
from osbot_utils.helpers.Safe_Id import Safe_Id
|
11
12
|
from osbot_utils.helpers.Timestamp_Now import Timestamp_Now
|
12
13
|
from osbot_utils.helpers.Random_Guid import Random_Guid
|
13
14
|
from osbot_utils.utils.Misc import list_set
|
14
15
|
from osbot_utils.utils.Str import str_unicode_escape, str_max_width
|
15
16
|
|
16
|
-
TYPE_SAFE__CONVERT_VALUE__SUPPORTED_TYPES = [Random_Guid, Timestamp_Now]
|
17
|
+
TYPE_SAFE__CONVERT_VALUE__SUPPORTED_TYPES = [Safe_Id, Random_Guid, Timestamp_Now]
|
17
18
|
|
18
19
|
# Backport implementations of get_origin and get_args for Python 3.7
|
19
20
|
if sys.version_info < (3, 8):
|
@@ -352,6 +353,8 @@ def obj_is_attribute_annotation_of_type(target, attr_name, expected_type):
|
|
352
353
|
return True
|
353
354
|
if expected_type is type(attribute_annotation):
|
354
355
|
return True
|
356
|
+
if expected_type is get_origin(attribute_annotation): # handle genericAlias
|
357
|
+
return True
|
355
358
|
return False
|
356
359
|
|
357
360
|
def obj_is_type_union_compatible(var_type, compatible_types):
|
@@ -0,0 +1 @@
|
|
1
|
+
v1.73.1
|
@@ -1 +0,0 @@
|
|
1
|
-
v1.70.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.70.0 → osbot_utils-1.73.1}/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.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/methods/cache_on_function.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-1.70.0 → osbot_utils-1.73.1}/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.70.0 → osbot_utils-1.73.1}/osbot_utils/decorators/methods/function_type_check.py
RENAMED
File without changes
|
File without changes
|
{osbot_utils-1.70.0 → osbot_utils-1.73.1}/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.70.0 → osbot_utils-1.73.1}/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.70.0 → osbot_utils-1.73.1}/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
|
{osbot_utils-1.70.0 → osbot_utils-1.73.1}/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.70.0 → osbot_utils-1.73.1}/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.70.0 → osbot_utils-1.73.1}/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
|
File without changes
|
File without changes
|