osbot-utils 1.84.0__tar.gz → 1.85.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.84.0 → osbot_utils-1.85.0}/PKG-INFO +2 -2
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/README.md +1 -1
- osbot_utils-1.85.0/osbot_utils/decorators/methods/type_safe.py +12 -0
- osbot_utils-1.85.0/osbot_utils/helpers/Type_Safe_Method.py +104 -0
- osbot_utils-1.85.0/osbot_utils/version +1 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/pyproject.toml +1 -1
- osbot_utils-1.84.0/osbot_utils/version +0 -1
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/LICENSE +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/base_classes/Cache_Pickle.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/base_classes/Kwargs_To_Disk.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/base_classes/Kwargs_To_Self.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/base_classes/Type_Safe.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/base_classes/Type_Safe__List.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/base_classes/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/context_managers/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/context_managers/async_invoke.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/context_managers/capture_duration.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/context_managers/disable_root_loggers.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/context_managers/print_duration.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/classes/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/classes/singleton.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/lists/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/lists/filter_list.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/lists/group_by.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/lists/index_by.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/methods/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/methods/cache.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/methods/cache_on_function.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/methods/cache_on_self.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/methods/cache_on_tmp.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/methods/capture_exception.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/methods/capture_status.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/methods/catch.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/methods/context.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/methods/depreciated.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/methods/function_type_check.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/methods/obj_as_context.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/methods/remove_return_value.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/methods/required_fields.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/fluent/Fluent_Dict.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/fluent/Fluent_List.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/fluent/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/mermaid/Mermaid.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/mermaid/Mermaid__Edge.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/mermaid/Mermaid__Graph.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/mermaid/Mermaid__Node.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/mermaid/Mermaid__Renderer.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/mermaid/configs/Mermaid__Edge__Config.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/mermaid/configs/Mermaid__Node__Config.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/mermaid/configs/Mermaid__Render__Config.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/mermaid/examples/Mermaid_Examples__FlowChart.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/mermaid/models/Mermaid__Diagram_Direction.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/mermaid/models/Mermaid__Diagram__Type.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/mermaid/models/Mermaid__Node__Shape.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/mgraph/MGraph.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/mgraph/MGraph__Config.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/mgraph/MGraph__Data.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/mgraph/MGraph__Edge.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/mgraph/MGraph__Node.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/mgraph/MGraph__Random_Graphs.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/mgraph/MGraph__Serializer.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/mgraph/MGraphs.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/graphs/mgraph/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/CFormat.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/CPrint.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/Dependency_Manager.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/Dict_To_Attr.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/Hashicorp_Secrets.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/Local_Cache.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/Local_Caches.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/Print_Table.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/Python_Audit.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/Random_Guid.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/Random_Guid_Short.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/Random_Seed.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/Safe_Id.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/Timestamp_Now.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/Type_Registry.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/Zip_Bytes.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/Ast.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/Ast_Base.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/Ast_Data.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/Ast_Load.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/Ast_Merge.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/Ast_Node.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/Ast_Visit.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/Call_Tree.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Add.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Alias.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_And.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Argument.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Arguments.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Assert.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Assign.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Attribute.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Aug_Assign.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Bin_Op.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Bool_Op.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Break.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Call.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Class_Def.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Compare.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Comprehension.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Constant.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Continue.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Dict.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Eq.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Except_Handler.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Expr.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_For.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Function_Def.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Generator_Exp.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Gt.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_GtE.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_If.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_If_Exp.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Import.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Import_From.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_In.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Is.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Is_Not.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Keyword.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Lambda.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_List.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_List_Comp.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Load.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Lt.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_LtE.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Mod.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Module.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Mult.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Name.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Not.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Not_Eq.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Not_In.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Or.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Pass.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Pow.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Raise.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Return.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Set.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Slice.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Starred.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Store.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Sub.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Subscript.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Try.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Tuple.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Unary_Op.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_While.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_With.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_With_Item.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/Ast_Yield.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ast/nodes/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Actions.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Config.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Data.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Invoke.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Row.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Table.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/cache_requests/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/cache_requests/flows/flow__Cache__Requests.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/flows/Flow.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/flows/Flow__Events.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/flows/Task.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/flows/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/flows/decorators/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/flows/decorators/flow.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/flows/decorators/task.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/flows/models/Flow_Run__Config.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/flows/models/Flow_Run__Event.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Data.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Type.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/flows/models/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/generators/Generator_Context_Manager.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/generators/Generator_Manager.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/generators/Model__Generator_State.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/generators/Model__Generator_Target.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/generators/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/html/Dict_To_Css.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/html/Dict_To_Html.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/html/Dict_To_Tags.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/html/Html_To_Dict.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/html/Html_To_Tag.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/html/Tag__Base.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/html/Tag__Body.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/html/Tag__Div.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/html/Tag__H.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/html/Tag__HR.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/html/Tag__Head.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/html/Tag__Html.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/html/Tag__Link.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/html/Tag__Style.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/html/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/pubsub/Event__Queue.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/pubsub/PubSub__Client.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/pubsub/PubSub__Room.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/pubsub/PubSub__Server.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/pubsub/PubSub__Sqlite.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/pubsub/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Connect.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Disconnect.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Execute_Method.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Join_Room.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Leave_Room.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Message.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/pubsub/schemas/Schema__PubSub__Client.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/pubsub/schemas/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/Capture_Sqlite_Error.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/Sqlite__Cursor.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/Sqlite__Database.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/Sqlite__Field.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/Sqlite__Globals.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/Sqlite__Table.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/Sqlite__Table__Create.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Database__Disk.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Table.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/cache/Schema__Table__Requests.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Patch.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Sqlite.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Table.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/cache/Sqlite__DB__Requests.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/cache/TestCase__Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/cache/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Files.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Graph.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Json.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Local.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/domains/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/domains/schemas/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/models/Sqlite__Field__Type.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/models/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/sample_data/Sqlite__Sample_Data__Chinook.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/sample_data/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder__Select.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/sql_builder/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Config.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Edges.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Files.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Nodes.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/sqlite/tables/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ssh/SCP.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ssh/SSH.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ssh/SSH__Cache__Requests.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ssh/SSH__Execute.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ssh/SSH__Health_Check.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ssh/SSH__Linux.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ssh/SSH__Linux__Amazon.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ssh/SSH__Python.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ssh/TestCase__SSH.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/ssh/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/trace/Trace_Call.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/trace/Trace_Call__Config.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/trace/Trace_Call__Graph.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/trace/Trace_Call__Handler.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/trace/Trace_Call__Print_Lines.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/trace/Trace_Call__Print_Traces.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/trace/Trace_Call__Stack.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/trace/Trace_Call__Stack_Node.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/trace/Trace_Call__Stats.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/trace/Trace_Call__View_Model.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/trace/Trace_Files.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/trace/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/Catch.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/Custom_Handler_For_Http_Tests.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/Duration.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/Hook_Method.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/Log_To_Queue.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/Log_To_String.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/Logging.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/Patch_Print.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/Profiler.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/Pytest.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/Stderr.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/Stdout.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/Temp_Env_Vars.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/Temp_File.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/Temp_Folder.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/Temp_Sys_Path.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/Temp_Web_Server.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/Temp_Zip.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/Temp_Zip_In_Memory.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/Unit_Test.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/Unzip_File.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/testing/__init__.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Assert.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Call_Stack.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Csv.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Dev.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Env.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Exceptions.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Files.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Functions.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Http.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Int.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Json.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Json_Cache.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Lists.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Misc.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Objects.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Png.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Process.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Python_Logger.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Regex.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Status.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Str.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Threads.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Toml.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Version.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/utils/Zip.py +0 -0
- {osbot_utils-1.84.0 → osbot_utils-1.85.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.85.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
|
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import functools # For wrapping functions
|
2
|
+
from osbot_utils.helpers.Type_Safe_Method import Type_Safe_Method
|
3
|
+
|
4
|
+
def type_safe(func): # Main decorator function
|
5
|
+
@functools.wraps(func) # Preserve function metadata
|
6
|
+
def wrapper(*args, **kwargs): # Wrapper function
|
7
|
+
type_checker = Type_Safe_Method(func) # Create type checker instance
|
8
|
+
bound_args = type_checker.handle_type_safety(args, kwargs) # Validate type safety
|
9
|
+
return func(**bound_args.arguments) # Call original function
|
10
|
+
|
11
|
+
return wrapper # Return wrapped function
|
12
|
+
|
@@ -0,0 +1,104 @@
|
|
1
|
+
import inspect # For function introspection
|
2
|
+
from typing import get_args, get_origin, Optional, Union, List, Any, Dict # For type hinting utilities
|
3
|
+
|
4
|
+
|
5
|
+
class Type_Safe_Method: # Class to handle method type safety validation
|
6
|
+
def __init__(self, func): # Initialize with function
|
7
|
+
self.func = func # Store original function
|
8
|
+
self.sig = inspect.signature(func) # Get function signature
|
9
|
+
self.annotations = func.__annotations__ # Get type annotations
|
10
|
+
|
11
|
+
def handle_type_safety(self, args: tuple, kwargs: dict): # Main method to handle type safety
|
12
|
+
bound_args = self.bind_args(args, kwargs) # Bind arguments to parameters
|
13
|
+
for param_name, param_value in bound_args.arguments.items(): # Iterate through arguments
|
14
|
+
if param_name != 'self': # Skip self parameter
|
15
|
+
self.validate_parameter(param_name, param_value, bound_args) # Validate each parameter
|
16
|
+
return bound_args # Return bound arguments
|
17
|
+
|
18
|
+
def bind_args(self, args: tuple, kwargs: dict): # Bind args to parameters
|
19
|
+
bound_args = self.sig.bind(*args, **kwargs) # Bind arguments to signature
|
20
|
+
bound_args.apply_defaults() # Apply default values
|
21
|
+
return bound_args # Return bound arguments
|
22
|
+
|
23
|
+
def validate_parameter(self, param_name: str, param_value: Any, bound_args): # Validate a single parameter
|
24
|
+
if param_name in self.annotations: # Check if parameter is annotated
|
25
|
+
expected_type = self.annotations[param_name] # Get expected type
|
26
|
+
self.check_parameter_value(param_name, param_value, expected_type, bound_args)# Check value against type
|
27
|
+
|
28
|
+
def check_parameter_value(self, param_name: str, param_value: Any, # Check parameter value against expected type
|
29
|
+
expected_type: Any, bound_args): # Method parameters
|
30
|
+
is_optional = self.is_optional_type(expected_type) # Check if type is optional
|
31
|
+
has_default = self.has_default_value(param_name) # Check if has default value
|
32
|
+
|
33
|
+
if param_value is None: # Handle None value case
|
34
|
+
self.validate_none_value(param_name, is_optional, has_default) # Validate None value
|
35
|
+
return # Exit early
|
36
|
+
|
37
|
+
origin_type = get_origin(expected_type) # Get base type
|
38
|
+
|
39
|
+
if self.is_list_type(origin_type): # Check if list type
|
40
|
+
self.validate_list_type(param_name, param_value, expected_type) # Validate list
|
41
|
+
return # Exit early
|
42
|
+
|
43
|
+
if self.is_union_type(origin_type, is_optional): # Check if union type
|
44
|
+
self.validate_union_type(param_name, param_value, expected_type) # Validate union
|
45
|
+
return # Exit early
|
46
|
+
|
47
|
+
if self.try_basic_type_conversion(param_value, expected_type, param_name, # Try basic type conversion
|
48
|
+
bound_args): # Pass bound args
|
49
|
+
return # Exit if conversion successful
|
50
|
+
|
51
|
+
self.validate_direct_type(param_name, param_value, expected_type) # Direct type validation
|
52
|
+
|
53
|
+
def is_optional_type(self, type_hint: Any) -> bool: # Check if type is Optional
|
54
|
+
if get_origin(type_hint) is Union: # Check if Union type
|
55
|
+
return type(None) in get_args(type_hint) # Check if None is allowed
|
56
|
+
return False # Not optional
|
57
|
+
|
58
|
+
def has_default_value(self, param_name: str) -> bool: # Check if parameter has default value
|
59
|
+
return (param_name in self.sig.parameters and # Check parameter exists
|
60
|
+
self.sig.parameters[param_name].default is not inspect._empty) # Check has non-empty default
|
61
|
+
|
62
|
+
def validate_none_value(self, param_name: str, # Validate None value
|
63
|
+
is_optional: bool, has_default: bool): # Optional and default flags
|
64
|
+
if not (is_optional or has_default): # If neither optional nor default
|
65
|
+
raise ValueError(f"Parameter '{param_name}' is not optional but got None") # Raise error for None value
|
66
|
+
|
67
|
+
def is_list_type(self, origin_type: Any) -> bool: # Check if type is a List
|
68
|
+
return origin_type is list or origin_type is List # Check against list types
|
69
|
+
|
70
|
+
def validate_list_type(self, param_name: str, # Validate list type and contents
|
71
|
+
param_value: Any, expected_type: Any): # List parameters
|
72
|
+
if not isinstance(param_value, list): # Check if value is a list
|
73
|
+
raise ValueError(f"Parameter '{param_name}' expected a list but got {type(param_value)}") # Raise error if not list
|
74
|
+
|
75
|
+
item_type = get_args(expected_type)[0] # Get list item type
|
76
|
+
for i, item in enumerate(param_value): # Check each list item
|
77
|
+
if not isinstance(item, item_type): # Validate item type
|
78
|
+
raise ValueError(f"List item at index {i} expected type {item_type}, but got {type(item)}") # Raise error for invalid item
|
79
|
+
|
80
|
+
def is_union_type(self, origin_type: Any, is_optional: bool) -> bool: # Check if type is a Union
|
81
|
+
return origin_type is Union and not is_optional # Must be Union but not Optional
|
82
|
+
|
83
|
+
def validate_union_type(self, param_name: str, # Validate union type
|
84
|
+
param_value: Any, expected_type: Any): # Union parameters
|
85
|
+
args_types = get_args(expected_type) # Get allowed types
|
86
|
+
if not any(isinstance(param_value, arg_type) for arg_type in args_types): # Check if value matches any type
|
87
|
+
raise ValueError(f"Parameter '{param_name}' expected one of types {args_types}, but got {type(param_value)}") # Raise error if no match
|
88
|
+
|
89
|
+
def try_basic_type_conversion(self, param_value: Any, # Try to convert basic types
|
90
|
+
expected_type: Any, param_name: str, # Conversion parameters
|
91
|
+
bound_args) -> bool: # Return success flag
|
92
|
+
if type(param_value) in [int, str]: # Check if basic type
|
93
|
+
try: # Attempt conversion
|
94
|
+
converted_value = expected_type(param_value) # Convert value
|
95
|
+
bound_args.arguments[param_name] = converted_value # Update bound arguments
|
96
|
+
return True # Return success
|
97
|
+
except Exception: # Handle conversion failure
|
98
|
+
pass # Continue without conversion
|
99
|
+
return False # Return failure
|
100
|
+
|
101
|
+
def validate_direct_type(self, param_name: str, # Validate direct type match
|
102
|
+
param_value: Any, expected_type: Any): # Type parameters
|
103
|
+
if not isinstance(param_value, expected_type): # Check type match
|
104
|
+
raise ValueError(f"Parameter '{param_name}' expected type {expected_type}, but got {type(param_value)}") # Raise error if no match
|
@@ -0,0 +1 @@
|
|
1
|
+
v1.85.0
|
@@ -1 +0,0 @@
|
|
1
|
-
v1.84.0
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-1.84.0 → osbot_utils-1.85.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.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/methods/cache_on_function.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-1.84.0 → osbot_utils-1.85.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.84.0 → osbot_utils-1.85.0}/osbot_utils/decorators/methods/function_type_check.py
RENAMED
File without changes
|
File without changes
|
{osbot_utils-1.84.0 → osbot_utils-1.85.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.84.0 → osbot_utils-1.85.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.84.0 → osbot_utils-1.85.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
|
{osbot_utils-1.84.0 → osbot_utils-1.85.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.84.0 → osbot_utils-1.85.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.84.0 → osbot_utils-1.85.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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-1.84.0 → osbot_utils-1.85.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Row.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|