osbot-utils 2.1.0__tar.gz → 2.3.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.1.0 → osbot_utils-2.3.0}/PKG-INFO +3 -3
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/README.md +1 -1
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/Sqlite__Table__Create.py +3 -4
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/sample_data/Sqlite__Sample_Data__Chinook.py +7 -13
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/xml/rss/RSS__Channel.py +1 -1
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/type_safe/Type_Safe.py +21 -10
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/type_safe/Type_Safe_Method.py +12 -4
- osbot_utils-2.3.0/osbot_utils/utils/__init__.py +0 -0
- osbot_utils-2.3.0/osbot_utils/version +1 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/pyproject.toml +1 -1
- osbot_utils-2.1.0/osbot_utils/version +0 -1
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/LICENSE +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/base_classes/Cache_Pickle.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/base_classes/Kwargs_To_Disk.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/base_classes/Kwargs_To_Self.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/base_classes/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/context_managers/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/context_managers/async_invoke.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/context_managers/capture_duration.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/context_managers/disable_root_loggers.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/context_managers/print_duration.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/classes/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/classes/singleton.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/lists/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/lists/filter_list.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/lists/group_by.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/lists/index_by.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/methods/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/methods/cache.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/methods/cache_on_function.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/methods/cache_on_self.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/methods/cache_on_tmp.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/methods/capture_exception.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/methods/capture_status.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/methods/catch.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/methods/context.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/methods/depreciated.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/methods/function_type_check.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/methods/obj_as_context.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/methods/remove_return_value.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/methods/required_fields.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/fluent/Fluent_Dict.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/fluent/Fluent_List.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/fluent/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/CFormat.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/CPrint.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/Dependency_Manager.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/Dict_To_Attr.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/Guid.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/Hashicorp_Secrets.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/Local_Cache.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/Local_Caches.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/Print_Table.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/Python_Audit.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/Random_Guid.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/Random_Guid_Short.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/Random_Seed.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/Safe_Id.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/Str_ASCII.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/Timestamp_Now.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/Type_Registry.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/Zip_Bytes.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/Ast.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/Ast_Base.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/Ast_Data.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/Ast_Load.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/Ast_Merge.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/Ast_Node.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/Ast_Visit.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/Call_Tree.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Add.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Alias.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_And.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Argument.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Arguments.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Assert.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Assign.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Attribute.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Aug_Assign.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Bin_Op.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Bool_Op.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Break.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Call.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Class_Def.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Compare.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Comprehension.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Constant.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Continue.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Dict.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Eq.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Except_Handler.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Expr.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_For.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Function_Def.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Generator_Exp.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Gt.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_GtE.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_If.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_If_Exp.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Import.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Import_From.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_In.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Is.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Is_Not.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Keyword.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Lambda.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_List.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_List_Comp.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Load.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Lt.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_LtE.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Mod.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Module.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Mult.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Name.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Not.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Not_Eq.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Not_In.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Or.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Pass.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Pow.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Raise.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Return.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Set.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Slice.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Starred.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Store.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Sub.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Subscript.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Try.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Tuple.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Unary_Op.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_While.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_With.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_With_Item.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/Ast_Yield.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ast/nodes/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Actions.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Config.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Data.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Invoke.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Row.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Table.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/cache_requests/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/cache_requests/flows/flow__Cache__Requests.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/flows/Flow.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/flows/Flow__Events.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/flows/Task.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/flows/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/flows/decorators/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/flows/decorators/flow.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/flows/decorators/task.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/flows/models/Flow_Run__Config.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/flows/models/Flow_Run__Event.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Data.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Type.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/flows/models/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/generators/Generator_Context_Manager.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/generators/Generator_Manager.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/generators/Model__Generator_State.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/generators/Model__Generator_Target.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/generators/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/html/Dict_To_Css.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/html/Dict_To_Html.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/html/Dict_To_Tags.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/html/Html_To_Dict.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/html/Html_To_Tag.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/html/Tag__Base.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/html/Tag__Body.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/html/Tag__Div.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/html/Tag__H.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/html/Tag__HR.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/html/Tag__Head.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/html/Tag__Html.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/html/Tag__Link.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/html/Tag__Style.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/html/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/pubsub/Event__Queue.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/pubsub/PubSub__Client.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/pubsub/PubSub__Room.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/pubsub/PubSub__Server.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/pubsub/PubSub__Sqlite.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/pubsub/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Connect.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Disconnect.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Execute_Method.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Join_Room.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Leave_Room.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Message.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/pubsub/schemas/Schema__PubSub__Client.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/pubsub/schemas/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/python_compatibility/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/python_compatibility/python_3_8.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/Capture_Sqlite_Error.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/Sqlite__Cursor.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/Sqlite__Database.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/Sqlite__Field.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/Sqlite__Globals.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/Sqlite__Table.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Database__Disk.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Table.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/cache/Schema__Table__Requests.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Patch.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Sqlite.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Table.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/cache/Sqlite__DB__Requests.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/cache/TestCase__Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/cache/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Files.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Graph.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Json.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Local.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/domains/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/domains/schemas/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/models/Sqlite__Field__Type.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/models/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/sample_data/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder__Select.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/sql_builder/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Config.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Edges.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Files.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Nodes.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/sqlite/tables/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ssh/SCP.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ssh/SSH.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ssh/SSH__Cache__Requests.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ssh/SSH__Execute.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ssh/SSH__Health_Check.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ssh/SSH__Linux.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ssh/SSH__Linux__Amazon.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ssh/SSH__Python.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ssh/TestCase__SSH.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/ssh/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/trace/Trace_Call.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/trace/Trace_Call__Config.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/trace/Trace_Call__Handler.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/trace/Trace_Call__Print_Lines.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/trace/Trace_Call__Print_Traces.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/trace/Trace_Call__Stack.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/trace/Trace_Call__Stack_Node.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/trace/Trace_Call__Stats.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/trace/Trace_Call__View_Model.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/trace/Trace_Files.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/trace/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/xml/Xml__Attribute.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/xml/Xml__Element.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/xml/Xml__File.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/xml/Xml__File__Load.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/xml/Xml__File__To_Dict.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/xml/Xml__File__To_Xml.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/xml/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/xml/rss/RSS__Enclosure.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/xml/rss/RSS__Feed.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/xml/rss/RSS__Feed__Parser.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/xml/rss/RSS__Image.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/xml/rss/RSS__Item.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/Catch.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/Custom_Handler_For_Http_Tests.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/Duration.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/Hook_Method.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/Log_To_Queue.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/Log_To_String.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/Logging.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/Patch_Print.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/Profiler.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/Pytest.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/Stderr.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/Stdout.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/Temp_Env_Vars.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/Temp_File.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/Temp_Folder.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/Temp_Sys_Path.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/Temp_Web_Server.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/Temp_Zip.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/Temp_Zip_In_Memory.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/Unit_Test.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/Unzip_File.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/testing/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/type_safe/Type_Safe__Base.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/type_safe/Type_Safe__Dict.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/type_safe/Type_Safe__List.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/type_safe/Type_Safe__Validator.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/type_safe/__init__.py +0 -0
- {osbot_utils-2.1.0/osbot_utils/type_safe/validators → osbot_utils-2.3.0/osbot_utils/type_safe/decorators}/__init__.py +0 -0
- {osbot_utils-2.1.0/osbot_utils/decorators/methods → osbot_utils-2.3.0/osbot_utils/type_safe/decorators}/type_safe.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/type_safe/validators/Validator__Max.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/type_safe/validators/Validator__Min.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/type_safe/validators/Validator__One_Of.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/type_safe/validators/Validator__Regex.py +0 -0
- {osbot_utils-2.1.0/osbot_utils/utils → osbot_utils-2.3.0/osbot_utils/type_safe/validators}/__init__.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Assert.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Call_Stack.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Csv.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Dev.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Env.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Exceptions.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Files.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Functions.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Http.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Int.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Json.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Json_Cache.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Lists.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Misc.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Objects.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Png.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Process.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Python_Logger.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Regex.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Status.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Str.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Threads.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Toml.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Version.py +0 -0
- {osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/utils/Zip.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.3
|
2
2
|
Name: osbot_utils
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.3.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
|
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import inspect
|
2
|
-
from typing
|
3
|
-
|
2
|
+
from typing import List
|
4
3
|
from osbot_utils.base_classes.Kwargs_To_Self import Kwargs_To_Self
|
5
4
|
from osbot_utils.decorators.lists.filter_list import filter_list
|
6
5
|
from osbot_utils.helpers.sqlite.Sqlite__Field import Sqlite__Field
|
@@ -17,8 +16,8 @@ class Sqlite__Table__Create(Kwargs_To_Self):
|
|
17
16
|
self.set_default_fields()
|
18
17
|
|
19
18
|
def add_field(self, field_data: dict):
|
20
|
-
|
21
|
-
|
19
|
+
if field_data and isinstance(field_data, dict):
|
20
|
+
sqlite_field = Sqlite__Field.from_json(field_data)
|
22
21
|
self.fields.append(sqlite_field)
|
23
22
|
return True
|
24
23
|
return False
|
@@ -1,16 +1,10 @@
|
|
1
|
-
from osbot_utils.base_classes.Kwargs_To_Self
|
2
|
-
from osbot_utils.decorators.methods.cache_on_self
|
3
|
-
from osbot_utils.helpers.sqlite.Sqlite__Database
|
4
|
-
from osbot_utils.helpers.sqlite.
|
5
|
-
from osbot_utils.
|
6
|
-
from osbot_utils.
|
7
|
-
from osbot_utils.
|
8
|
-
from osbot_utils.utils.Dev import pprint
|
9
|
-
from osbot_utils.utils.Files import current_temp_folder, path_combine, folder_create, file_exists, file_not_exists, \
|
10
|
-
file_contents
|
11
|
-
from osbot_utils.utils.Http import GET, GET_to_file
|
12
|
-
from osbot_utils.utils.Json import json_loads, json_from_file, json_dump, json_file_create, json_file_load
|
13
|
-
from osbot_utils.utils.Objects import obj_info
|
1
|
+
from osbot_utils.base_classes.Kwargs_To_Self import Kwargs_To_Self
|
2
|
+
from osbot_utils.decorators.methods.cache_on_self import cache_on_self
|
3
|
+
from osbot_utils.helpers.sqlite.Sqlite__Database import Sqlite__Database
|
4
|
+
from osbot_utils.helpers.sqlite.domains.Sqlite__DB__Json import Sqlite__DB__Json
|
5
|
+
from osbot_utils.utils.Files import current_temp_folder, path_combine, folder_create, file_not_exists
|
6
|
+
from osbot_utils.utils.Http import GET_to_file
|
7
|
+
from osbot_utils.utils.Json import json_from_file, json_file_create, json_file_load
|
14
8
|
|
15
9
|
URL__CHINOOK_JSON = 'https://github.com/lerocha/chinook-database/releases/download/v1.4.5/ChinookData.json'
|
16
10
|
FILE_NAME__CHINOOK_DATA_JSON = 'ChinookData.json'
|
@@ -1,5 +1,5 @@
|
|
1
1
|
from typing import Any, Dict, List
|
2
|
-
from osbot_utils.type_safe.Type_Safe
|
2
|
+
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
3
3
|
from osbot_utils.helpers.xml.rss.RSS__Image import RSS__Image
|
4
4
|
from osbot_utils.helpers.xml.rss.RSS__Item import RSS__Item
|
5
5
|
|
@@ -24,7 +24,7 @@ if sys.version_info < (3, 8): # pragma
|
|
24
24
|
else:
|
25
25
|
return ()
|
26
26
|
else:
|
27
|
-
from typing import get_origin, get_args, ForwardRef
|
27
|
+
from typing import get_origin, get_args, ForwardRef, Any
|
28
28
|
from osbot_utils.helpers.python_compatibility.python_3_8 import Annotated
|
29
29
|
|
30
30
|
if sys.version_info >= (3, 10):
|
@@ -117,12 +117,16 @@ class Type_Safe:
|
|
117
117
|
# todo: refactor this to separate method
|
118
118
|
if hasattr(annotations, 'get'):
|
119
119
|
annotation = annotations.get(name)
|
120
|
-
if annotation
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
120
|
+
if annotation:
|
121
|
+
annotation_origin = get_origin(annotation)
|
122
|
+
if annotation_origin is Annotated:
|
123
|
+
annotation_args = get_args(annotation)
|
124
|
+
target_type = annotation_args[0]
|
125
|
+
for attribute in annotation_args[1:]:
|
126
|
+
if isinstance(attribute, Type_Safe__Validator):
|
127
|
+
attribute.validate(value=value, field_name=name, target_type=target_type)
|
128
|
+
elif annotation_origin is dict:
|
129
|
+
value = self.deserialize_dict__using_key_value_annotations(name, value)
|
126
130
|
|
127
131
|
super().__setattr__(name, value)
|
128
132
|
|
@@ -341,8 +345,12 @@ class Type_Safe:
|
|
341
345
|
else:
|
342
346
|
new__dict_key = key_class(dict_key)
|
343
347
|
|
344
|
-
if
|
348
|
+
if type(dict_value) == value_class: # if the value is already the target, then just use it
|
349
|
+
new__dict_value = dict_value
|
350
|
+
elif issubclass(value_class, Type_Safe):
|
345
351
|
new__dict_value = value_class().deserialize_from_dict(dict_value)
|
352
|
+
elif value_class is Any:
|
353
|
+
new__dict_value = dict_value
|
346
354
|
else:
|
347
355
|
new__dict_value = value_class(dict_value)
|
348
356
|
new_value[new__dict_key] = new__dict_value
|
@@ -353,7 +361,7 @@ class Type_Safe:
|
|
353
361
|
def deserialize_from_dict(self, data, raise_on_not_found=False):
|
354
362
|
from decimal import Decimal
|
355
363
|
from enum import EnumMeta
|
356
|
-
from osbot_utils.type_safe.Type_Safe__List
|
364
|
+
from osbot_utils.type_safe.Type_Safe__List import Type_Safe__List
|
357
365
|
from osbot_utils.helpers.Random_Guid import Random_Guid
|
358
366
|
from osbot_utils.helpers.Random_Guid_Short import Random_Guid_Short
|
359
367
|
from osbot_utils.utils.Objects import obj_is_attribute_annotation_of_type
|
@@ -362,6 +370,9 @@ class Type_Safe:
|
|
362
370
|
from osbot_utils.helpers.Safe_Id import Safe_Id
|
363
371
|
from osbot_utils.helpers.Timestamp_Now import Timestamp_Now
|
364
372
|
|
373
|
+
if hasattr(data, 'items') is False:
|
374
|
+
raise ValueError(f"Expected a dictionary, but got '{type(data)}'")
|
375
|
+
|
365
376
|
for key, value in data.items():
|
366
377
|
if hasattr(self, key) and isinstance(getattr(self, key), Type_Safe):
|
367
378
|
getattr(self, key).deserialize_from_dict(value) # if the attribute is a Type_Safe object, then also deserialize it
|
@@ -432,7 +443,7 @@ class Type_Safe:
|
|
432
443
|
json_data = json_parse(json_data)
|
433
444
|
if json_data: # if there is no data or is {} then don't create an object (since this could be caused by bad data being provided)
|
434
445
|
return cls().deserialize_from_dict(json_data,raise_on_not_found=raise_on_not_found)
|
435
|
-
return
|
446
|
+
return cls()
|
436
447
|
|
437
448
|
# todo: see if it is possible to add recursive protection to this logic
|
438
449
|
def serialize_to_dict(obj):
|
@@ -1,15 +1,22 @@
|
|
1
1
|
import inspect # For function introspection
|
2
2
|
from enum import Enum
|
3
|
-
from typing import get_args, get_origin,
|
3
|
+
from typing import get_args, get_origin, Union, List, Any # For type hinting utilities
|
4
4
|
|
5
5
|
|
6
6
|
class Type_Safe_Method: # Class to handle method type safety validation
|
7
7
|
def __init__(self, func): # Initialize with function
|
8
8
|
self.func = func # Store original function
|
9
9
|
self.sig = inspect.signature(func) # Get function signature
|
10
|
-
self.annotations = func.__annotations__ # Get
|
10
|
+
self.annotations = func.__annotations__ # Get function annotations
|
11
|
+
|
12
|
+
def check_for_any_use(self):
|
13
|
+
for param_name, type_hint in self.annotations.items():
|
14
|
+
if type_hint is any: # Detect incorrect usage of lowercase any
|
15
|
+
raise ValueError(f"Parameter '{param_name}' uses lowercase 'any' instead of 'Any' from typing module. "
|
16
|
+
f"Please use 'from typing import Any' and annotate as '{param_name}: Any'")
|
11
17
|
|
12
18
|
def handle_type_safety(self, args: tuple, kwargs: dict): # Main method to handle type safety
|
19
|
+
self.check_for_any_use()
|
13
20
|
bound_args = self.bind_args(args, kwargs) # Bind arguments to parameters
|
14
21
|
for param_name, param_value in bound_args.arguments.items(): # Iterate through arguments
|
15
22
|
if param_name != 'self': # Skip self parameter
|
@@ -107,5 +114,6 @@ class Type_Safe_Method:
|
|
107
114
|
|
108
115
|
def validate_direct_type(self, param_name: str, # Validate direct type match
|
109
116
|
param_value: Any, expected_type: Any): # Type parameters
|
110
|
-
if
|
111
|
-
|
117
|
+
if expected_type is not Any:
|
118
|
+
if not isinstance(param_value, expected_type): # Check type match
|
119
|
+
raise ValueError(f"Parameter '{param_name}' expected type {expected_type}, but got {type(param_value)}") # Raise error if no match
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
v2.3.0
|
@@ -1 +0,0 @@
|
|
1
|
-
v2.1.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
|
{osbot_utils-2.1.0 → osbot_utils-2.3.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
|
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.1.0 → osbot_utils-2.3.0}/osbot_utils/decorators/methods/function_type_check.py
RENAMED
File without changes
|
File without changes
|
{osbot_utils-2.1.0 → osbot_utils-2.3.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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
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.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Data.py
RENAMED
File without changes
|
File without changes
|
{osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Row.py
RENAMED
File without changes
|
{osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Table.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.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/flows/models/Flow_Run__Config.py
RENAMED
File without changes
|
File without changes
|
{osbot_utils-2.1.0 → osbot_utils-2.3.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Data.py
RENAMED
File without changes
|