osbot-utils 2.64.0__tar.gz → 2.66.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-2.64.0 → osbot_utils-2.66.0}/PKG-INFO +2 -2
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/README.md +1 -1
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/base_classes/Kwargs_To_Disk.py +1 -1
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/pubsub/PubSub__Sqlite.py +1 -1
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_str/Safe_Str__Hash.py +10 -3
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/cache/Sqlite__DB__Requests.py +1 -1
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/Type_Safe__Method.py +23 -12
- osbot_utils-2.66.0/osbot_utils/type_safe/decorators/type_safe.py +22 -0
- osbot_utils-2.66.0/osbot_utils/version +1 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/pyproject.toml +1 -1
- osbot_utils-2.64.0/osbot_utils/type_safe/decorators/type_safe.py +0 -12
- osbot_utils-2.64.0/osbot_utils/version +0 -1
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/LICENSE +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/base_classes/Cache_Pickle.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/base_classes/Kwargs_To_Self.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/base_classes/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/context_managers/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/context_managers/async_invoke.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/context_managers/disable_root_loggers.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/classes/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/classes/singleton.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/lists/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/lists/filter_list.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/lists/group_by.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/lists/index_by.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/methods/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/methods/cache.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/methods/cache_on_function.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/methods/cache_on_self.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/methods/cache_on_tmp.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/methods/capture_exception.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/methods/capture_status.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/methods/catch.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/methods/context.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/methods/depreciated.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/methods/function_type_check.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/methods/obj_as_context.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/methods/remove_return_value.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/methods/required_fields.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/fluent/Fluent_Dict.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/fluent/Fluent_List.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/fluent/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/CFormat.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/CPrint.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/Dependency_Manager.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/Dict_To_Attr.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/Guid.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/Hashicorp_Secrets.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/Local_Cache.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/Local_Caches.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/Obj_Id.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/Print_Table.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/Python_Audit.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/Random_Guid.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/Random_Guid_Short.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/Random_Seed.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/Safe_Id.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/Str_ASCII.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/Timestamp_Now.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/Type_Registry.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/Zip_Bytes.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/Ast.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/Ast_Base.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/Ast_Data.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/Ast_Load.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/Ast_Merge.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/Ast_Node.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/Ast_Visit.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/Call_Tree.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Add.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Alias.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_And.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Argument.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Arguments.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Assert.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Assign.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Attribute.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Aug_Assign.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Bin_Op.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Bool_Op.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Break.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Call.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Class_Def.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Compare.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Comprehension.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Constant.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Continue.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Dict.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Eq.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Except_Handler.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Expr.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_For.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Function_Def.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Generator_Exp.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Gt.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_GtE.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_If.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_If_Exp.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Import.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Import_From.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_In.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Is.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Is_Not.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Keyword.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Lambda.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_List.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_List_Comp.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Load.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Lt.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_LtE.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Mod.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Module.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Mult.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Name.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Not.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Not_Eq.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Not_In.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Or.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Pass.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Pow.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Raise.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Return.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Set.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Slice.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Starred.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Store.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Sub.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Subscript.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Try.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Tuple.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Unary_Op.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_While.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_With.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_With_Item.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/Ast_Yield.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ast/nodes/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/cache_on_self/Cache_Controller.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/cache_on_self/Cache_Key_Generator.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/cache_on_self/Cache_Metrics.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/cache_on_self/Cache_On_Self.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/cache_on_self/Cache_Storage.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/cache_on_self/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Actions.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Config.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Data.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Invoke.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Row.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Table.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/cache_requests/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/duration/Duration.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/duration/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/duration/decorators/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/duration/decorators/capture_duration.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/duration/decorators/duration.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/duration/decorators/print_duration.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/duration/schemas/Schema__Duration.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/duration/schemas/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/Flow.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/Task.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/actions/Flow__Data.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/actions/Flow__Events.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/actions/Flow__Stats__Collector.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/actions/Task__Stats__Collector.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/actions/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/decorators/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/decorators/flow.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/decorators/task.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/models/Flow_Run__Config.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/models/Flow_Run__Event.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Data.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Type.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/models/Schema__Flow__Artifact.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/models/Schema__Flow__Result.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/models/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/schemas/Schema__Flow.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/schemas/Schema__Flow__Data.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/schemas/Schema__Flow__Event.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/schemas/Schema__Flow__Event__Data.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/schemas/Schema__Flow__Log.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/schemas/Schema__Flow__Stats.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/schemas/Schema__Flow__Status.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/schemas/Schema__Flow__Task__Data.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/schemas/Schema__Task__Stats.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/flows/schemas/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/generators/Generator_Context_Manager.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/generators/Generator_Manager.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/generators/Model__Generator_State.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/generators/Model__Generator_Target.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/generators/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/CSS_Dict__To__Css.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/Html_Dict__To__Html.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/Html_Dict__To__Html_Document.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/Html_Dict__To__Html_Tags.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/Html__To__Html_Dict.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/Html__To__Html_Document.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/Html__To__Html_Tag.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/Tag__Base.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/Tag__Body.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/Tag__Div.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/Tag__H.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/Tag__HR.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/Tag__Head.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/Tag__Html.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/Tag__Link.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/Tag__Style.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/Tag__Text.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/schemas/Schema__Html_Document.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/schemas/Schema__Html_Node.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/schemas/Schema__Html_Node__Data.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/schemas/Schema__Html_Node__Data__Type.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/html/schemas/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/actions/LLM_Request__Execute.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/actions/Type_Safe__Schema_For__LLMs.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/actions/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/builders/LLM_Request__Builder.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/builders/LLM_Request__Builder__Open_AI.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/builders/LLM_Request__Factory.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/builders/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/cache/LLM_Cache__Path_Generator.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/cache/LLM_Request__Cache.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/cache/LLM_Request__Cache__File_System.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/cache/LLM_Request__Cache__Storage.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/cache/Virtual_Storage__Local__Folder.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/cache/Virtual_Storage__Sqlite.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/cache/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/platforms/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/platforms/open_ai/API__LLM__Open_AI.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/platforms/open_ai/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Cache__Index.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Request.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Data.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Function_Call.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Message__Content.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Message__Role.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Response.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Response__Cache.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/llms/schemas/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/pubsub/Event__Queue.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/pubsub/PubSub__Client.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/pubsub/PubSub__Room.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/pubsub/PubSub__Server.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/pubsub/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Connect.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Disconnect.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Execute_Method.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Join_Room.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Leave_Room.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Message.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/pubsub/schemas/Schema__PubSub__Client.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/pubsub/schemas/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/python_compatibility/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/python_compatibility/python_3_8.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_float/Safe_Float.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_float/Safe_Float__Engineering.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_float/Safe_Float__Money.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_float/Safe_Float__Percentage_Exact.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_float/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_int/Safe_Int.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_int/Safe_UInt.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_int/Safe_UInt__Byte.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_int/Safe_UInt__FileSize.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_int/Safe_UInt__Percentage.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_int/Safe_UInt__Port.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_int/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_str/Safe_Str.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_str/Safe_Str__File__Name.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_str/Safe_Str__File__Path.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_str/Safe_Str__Text.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_str/Safe_Str__Text__Dangerous.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_str/Safe_Str__Url.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_str/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_str/http/Safe_Str__Html.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_str/http/Safe_Str__Http__Content_Type.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_str/http/Safe_Str__Http__ETag.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_str/http/Safe_Str__Http__Last_Modified.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_str/http/Safe_Str__Http__Text.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/safe_str/http/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/Capture_Sqlite_Error.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/Sqlite__Cursor.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/Sqlite__Database.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/Sqlite__Field.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/Sqlite__Globals.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/Sqlite__Table.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/Sqlite__Table__Create.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Database__Disk.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Table.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/cache/Schema__Table__Requests.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Patch.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Sqlite.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Table.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/cache/TestCase__Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/cache/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Files.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Graph.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Json.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Local.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/domains/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/domains/schemas/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/models/Sqlite__Field__Type.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/models/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/sample_data/Sqlite__Sample_Data__Chinook.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/sample_data/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder__Select.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/sql_builder/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Config.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Edges.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Files.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Nodes.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/tables/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ssh/SCP.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ssh/SSH.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ssh/SSH__Cache__Requests.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ssh/SSH__Execute.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ssh/SSH__Health_Check.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ssh/SSH__Linux.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ssh/SSH__Linux__Amazon.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ssh/SSH__Python.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ssh/TestCase__SSH.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/ssh/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/trace/Trace_Call.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/trace/Trace_Call__Config.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/trace/Trace_Call__Handler.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/trace/Trace_Call__Print_Lines.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/trace/Trace_Call__Print_Traces.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/trace/Trace_Call__Stack.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/trace/Trace_Call__Stack_Node.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/trace/Trace_Call__Stats.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/trace/Trace_Call__View_Model.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/trace/Trace_Files.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/trace/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/xml/Xml__Attribute.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/xml/Xml__Element.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/xml/Xml__File.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/xml/Xml__File__Load.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/xml/Xml__File__To_Dict.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/xml/Xml__File__To_Xml.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/xml/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/xml/rss/RSS__Channel.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/xml/rss/RSS__Enclosure.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/xml/rss/RSS__Feed.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/xml/rss/RSS__Feed__Parser.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/xml/rss/RSS__Image.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/xml/rss/RSS__Item.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/Catch.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/Custom_Handler_For_Http_Tests.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/Hook_Method.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/Log_To_Queue.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/Log_To_String.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/Logging.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/Patch_Print.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/Profiler.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/Pytest.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/Stderr.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/Stdout.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/Temp_Env_Vars.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/Temp_File.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/Temp_Folder.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/Temp_Sys_Path.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/Temp_Web_Server.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/Temp_Zip.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/Temp_Zip_In_Memory.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/Unit_Test.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/Unzip_File.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/performance/Performance_Measure__Session.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/performance/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/performance/models/Model__Performance_Measure__Measurement.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/performance/models/Model__Performance_Measure__Result.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/testing/performance/models/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/Type_Safe.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/Type_Safe__Base.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/Type_Safe__Dict.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/Type_Safe__List.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/Type_Safe__Primitive.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/Type_Safe__Set.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/Type_Safe__Tuple.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/decorators/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/methods/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/methods/type_safe_property.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/shared/Type_Safe__Annotations.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/shared/Type_Safe__Cache.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/shared/Type_Safe__Convert.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/shared/Type_Safe__Json_Compressor.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/shared/Type_Safe__Json_Compressor__Type_Registry.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/shared/Type_Safe__Not_Cached.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/shared/Type_Safe__Raise_Exception.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/shared/Type_Safe__Shared__Variables.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/shared/Type_Safe__Validation.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/shared/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Class_Kwargs.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Default_Kwargs.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Default_Value.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/steps/Type_Safe__Step__From_Json.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Init.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Set_Attr.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/steps/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/validators/Type_Safe__Validator.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/validators/Validator__Max.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/validators/Validator__Min.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/validators/Validator__One_Of.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/validators/Validator__Regex.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/type_safe/validators/__init__.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Assert.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Call_Stack.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Csv.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Dev.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Env.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Exceptions.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Files.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Functions.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Http.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Int.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Json.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Json_Cache.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Lists.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Misc.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Objects.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Png.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Process.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Python_Logger.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Regex.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Status.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Str.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Threads.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Toml.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Version.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/Zip.py +0 -0
- {osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/utils/__init__.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: osbot_utils
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.66.0
|
4
4
|
Summary: OWASP Security Bot - Utils
|
5
5
|
License: MIT
|
6
6
|
Author: Dinis Cruz
|
@@ -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
|
|
@@ -20,7 +20,7 @@ class Kwargs_To_Disk:
|
|
20
20
|
else:
|
21
21
|
self._local_cache.set(key, value)
|
22
22
|
|
23
|
-
def _cache_create (self): return self._local_cache.create
|
23
|
+
def _cache_create (self): return self._local_cache.create()
|
24
24
|
def _cache_delete (self): return self._local_cache.cache_delete ()
|
25
25
|
def _cache_data (self): return self._local_cache.data ()
|
26
26
|
def _cache_exists (self): return self._local_cache.cache_exists ()
|
@@ -15,7 +15,7 @@ class PubSub__Sqlite(Sqlite__Database):
|
|
15
15
|
with self.table_clients() as _:
|
16
16
|
_.row_schema = TABLE_SCHEMA__PUB_SUB__CLIENTS
|
17
17
|
if _.exists() is False:
|
18
|
-
_.create()
|
18
|
+
_.create() # create if it doesn't exist
|
19
19
|
return True
|
20
20
|
return False
|
21
21
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import re
|
2
|
+
from typing import Any
|
2
3
|
from osbot_utils.helpers.safe_str.Safe_Str import Safe_Str
|
3
|
-
from osbot_utils.utils.Misc import
|
4
|
+
from osbot_utils.utils.Misc import bytes_md5
|
4
5
|
|
5
6
|
# Constants for hash validation
|
6
7
|
SIZE__VALUE_HASH = 10
|
@@ -14,5 +15,11 @@ class Safe_Str__Hash(Safe_Str):
|
|
14
15
|
strict_validation = True # Enable strict validation - new attribute
|
15
16
|
exact_length = True # Require exact length match - new attribute
|
16
17
|
|
17
|
-
def safe_str_hash(value
|
18
|
-
|
18
|
+
def safe_str_hash(value: Any) -> Safe_Str__Hash:
|
19
|
+
if isinstance(value, str):
|
20
|
+
value = value.encode()
|
21
|
+
elif not isinstance(value, bytes):
|
22
|
+
raise ValueError('In safe_str_hash, value must be a string or bytes')
|
23
|
+
|
24
|
+
hash_value = bytes_md5(value)[0:SIZE__VALUE_HASH]
|
25
|
+
return Safe_Str__Hash(hash_value)
|
{osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/sqlite/cache/Sqlite__DB__Requests.py
RENAMED
@@ -26,7 +26,7 @@ class Sqlite__DB__Requests(Sqlite__DB__Local):
|
|
26
26
|
with self.table_requests() as _:
|
27
27
|
_.row_schema = self.table_schema # set the table_class
|
28
28
|
if _.exists() is False:
|
29
|
-
_.create()
|
29
|
+
_.create() # create if it doesn't exist
|
30
30
|
_.index_create('request_hash') # add index to the request_hash field
|
31
31
|
return True
|
32
32
|
return False
|
@@ -10,12 +10,13 @@ class Type_Safe__Method:
|
|
10
10
|
self.func = func # Store original function
|
11
11
|
self.sig = inspect.signature(func) # Get function signature
|
12
12
|
self.annotations = func.__annotations__ # Get function annotations
|
13
|
+
self.params = list(self.sig.parameters.keys())
|
13
14
|
|
14
15
|
def check_for_any_use(self):
|
15
16
|
for param_name, type_hint in self.annotations.items():
|
16
17
|
if type_hint is any: # Detect incorrect usage of lowercase any
|
17
18
|
raise ValueError(f"Parameter '{param_name}' uses lowercase 'any' instead of 'Any' from typing module. "
|
18
|
-
|
19
|
+
f"Please use 'from typing import Any' and annotate as '{param_name}: Any'")
|
19
20
|
|
20
21
|
def handle_type_safety(self, args: tuple, kwargs: dict): # Main method to handle type safety
|
21
22
|
self.check_for_any_use()
|
@@ -80,10 +81,6 @@ class Type_Safe__Method:
|
|
80
81
|
self.validate_union_type(param_name, param_value, expected_type) # Validate union
|
81
82
|
return # Exit early
|
82
83
|
|
83
|
-
# if self.try_basic_type_conversion(param_value, expected_type, param_name, # Try basic type conversion
|
84
|
-
# bound_args): # Pass bound args
|
85
|
-
# return # Exit if conversion successful
|
86
|
-
|
87
84
|
self.validate_direct_type(param_name, param_value, expected_type) # Direct type validation
|
88
85
|
|
89
86
|
def is_optional_type(self, type_hint: Any) -> bool: # Check if type is Optional
|
@@ -108,9 +105,13 @@ class Type_Safe__Method:
|
|
108
105
|
if not isinstance(param_value, list): # Check if value is a list
|
109
106
|
raise ValueError(f"Parameter '{param_name}' expected a list but got {type(param_value)}") # Raise error if not list
|
110
107
|
|
111
|
-
item_type = get_args(expected_type)[0]
|
112
|
-
|
113
|
-
|
108
|
+
item_type = get_args(expected_type)[0] # Get list item type
|
109
|
+
if get_origin(item_type) is not None: # Handle the case when item_type is a subscripted type (which is not supported at the moment)
|
110
|
+
raise NotImplementedError(f"Validation for list items with subscripted type"
|
111
|
+
f" '{item_type}' is not yet supported "
|
112
|
+
f"in parameter '{param_name}'.") # todo: add support for checking for subscripted types
|
113
|
+
for i, item in enumerate(param_value): # Check each list item
|
114
|
+
if not isinstance(item, item_type): # Validate item type
|
114
115
|
raise ValueError(f"List item at index {i} expected type {item_type}, but got {type(item)}") # Raise error for invalid item
|
115
116
|
|
116
117
|
def validate_type_parameter(self, param_name: str, param_value: Any, expected_type: Any): # Validate a Type[T] parameter
|
@@ -163,6 +164,7 @@ class Type_Safe__Method:
|
|
163
164
|
is_optional = self.is_optional_type(expected_type) # Check if type is optional
|
164
165
|
has_default = self.has_default_value(param_name) # Check if has default value
|
165
166
|
self.validate_none_value(param_name, is_optional, has_default) # Validate None value
|
167
|
+
return True
|
166
168
|
|
167
169
|
origin = get_origin(expected_type)
|
168
170
|
|
@@ -174,11 +176,20 @@ class Type_Safe__Method:
|
|
174
176
|
if not isinstance(param_value, dict):
|
175
177
|
raise ValueError(f"Parameter '{param_name}' expected dict but got {type(param_value)}")
|
176
178
|
key_type, value_type = get_args(expected_type)
|
179
|
+
if value_type is Any: # if value type is Any, we don't need to do any checks since they will all match
|
180
|
+
return True
|
177
181
|
for k, v in param_value.items():
|
178
|
-
if
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
+
if get_origin(key_type) is None:
|
183
|
+
if not isinstance(k, key_type):
|
184
|
+
raise ValueError(f"Dict key '{k}' expected type {key_type}, but got {type(k)}")
|
185
|
+
else:
|
186
|
+
raise NotImplementedError(f"Validation for subscripted key type '{key_type}' not yet supported in parameter '{param_name}'")
|
187
|
+
|
188
|
+
if get_origin(value_type) is None:
|
189
|
+
if not isinstance(v, value_type):
|
190
|
+
raise ValueError(f"Dict value for key '{k}' expected type {value_type}, but got {type(v)}")
|
191
|
+
elif value_type is not Any:
|
192
|
+
raise NotImplementedError(f"Validation for subscripted value type '{value_type}' not yet supported in parameter '{param_name}'")
|
182
193
|
return True
|
183
194
|
base_type = origin
|
184
195
|
else:
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import functools # For wrapping functions
|
2
|
+
from osbot_utils.type_safe.Type_Safe__Method import Type_Safe__Method
|
3
|
+
|
4
|
+
def type_safe(func): # Main decorator function
|
5
|
+
type_checker = Type_Safe__Method(func) # Create type checker instance
|
6
|
+
|
7
|
+
has_only_self = len(type_checker.params) == 1 and type_checker.params[0] == 'self' # Check if method has only 'self' parameter or no parameters
|
8
|
+
has_no_params = len(type_checker.params) == 0
|
9
|
+
direct_execution = has_no_params or has_only_self # these are major performance optimisation where this @type_safe had an overhead of 250x (even on methods with no params) to now having an over head of ~5x
|
10
|
+
if direct_execution: # todo: review if we really need to do this, since although it is an optimisation, the idea of the type_safe attribute is to check when there are params
|
11
|
+
return func
|
12
|
+
|
13
|
+
@functools.wraps(func) # Preserve function metadata
|
14
|
+
def wrapper(*args, **kwargs): # Wrapper function
|
15
|
+
if direct_execution:
|
16
|
+
return func(*args, **kwargs)
|
17
|
+
else:
|
18
|
+
bound_args = type_checker.handle_type_safety(args, kwargs) # Validate type safety
|
19
|
+
return func(**bound_args.arguments) # Call original function
|
20
|
+
|
21
|
+
return wrapper # Return wrapped function
|
22
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
v2.66.0
|
@@ -1,12 +0,0 @@
|
|
1
|
-
import functools # For wrapping functions
|
2
|
-
from osbot_utils.type_safe.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
|
-
|
@@ -1 +0,0 @@
|
|
1
|
-
v2.64.0
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/context_managers/disable_root_loggers.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/methods/cache_on_function.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-2.64.0 → osbot_utils-2.66.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-2.64.0 → osbot_utils-2.66.0}/osbot_utils/decorators/methods/function_type_check.py
RENAMED
File without changes
|
File without changes
|
{osbot_utils-2.64.0 → osbot_utils-2.66.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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
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-2.64.0 → osbot_utils-2.66.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-2.64.0 → osbot_utils-2.66.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-2.64.0 → osbot_utils-2.66.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
|
{osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/cache_on_self/Cache_Controller.py
RENAMED
File without changes
|
{osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/cache_on_self/Cache_Key_Generator.py
RENAMED
File without changes
|
{osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/cache_on_self/Cache_Metrics.py
RENAMED
File without changes
|
{osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/cache_on_self/Cache_On_Self.py
RENAMED
File without changes
|
{osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/cache_on_self/Cache_Storage.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-2.64.0 → osbot_utils-2.66.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
|
{osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/duration/decorators/__init__.py
RENAMED
File without changes
|
File without changes
|
{osbot_utils-2.64.0 → osbot_utils-2.66.0}/osbot_utils/helpers/duration/decorators/duration.py
RENAMED
File without changes
|