MindsDB 1.2.9__py3-none-any.whl → 24.12.4.0__py3-none-any.whl

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.

Potentially problematic release.


This version of MindsDB might be problematic. Click here for more details.

Files changed (1959) hide show
  1. MindsDB-24.12.4.0.dist-info/LICENSE +199 -0
  2. MindsDB-24.12.4.0.dist-info/METADATA +910 -0
  3. MindsDB-24.12.4.0.dist-info/RECORD +1922 -0
  4. {MindsDB-1.2.9.dist-info → MindsDB-24.12.4.0.dist-info}/WHEEL +1 -1
  5. mindsdb/__about__.py +5 -5
  6. mindsdb/__init__.py +1 -11
  7. mindsdb/__main__.py +556 -0
  8. mindsdb/api/common/check_auth.py +42 -0
  9. mindsdb/api/executor/__init__.py +2 -0
  10. mindsdb/api/executor/command_executor.py +2047 -0
  11. mindsdb/api/executor/controllers/__init__.py +1 -0
  12. mindsdb/api/executor/controllers/session_controller.py +91 -0
  13. mindsdb/api/executor/data_types/answer.py +16 -0
  14. mindsdb/api/executor/data_types/response_type.py +8 -0
  15. mindsdb/api/executor/datahub/__init__.py +1 -0
  16. mindsdb/api/executor/datahub/classes/tables_row.py +65 -0
  17. mindsdb/api/executor/datahub/datanodes/__init__.py +4 -0
  18. mindsdb/api/executor/datahub/datanodes/datanode.py +20 -0
  19. mindsdb/api/executor/datahub/datanodes/information_schema_datanode.py +180 -0
  20. mindsdb/api/executor/datahub/datanodes/integration_datanode.py +281 -0
  21. mindsdb/api/executor/datahub/datanodes/mindsdb_tables.py +428 -0
  22. mindsdb/api/executor/datahub/datanodes/project_datanode.py +186 -0
  23. mindsdb/api/executor/datahub/datanodes/system_tables.py +525 -0
  24. mindsdb/api/executor/exceptions.py +39 -0
  25. mindsdb/api/executor/planner/__init__.py +5 -0
  26. mindsdb/api/executor/planner/exceptions.py +3 -0
  27. mindsdb/api/executor/planner/plan_join.py +640 -0
  28. mindsdb/api/executor/planner/plan_join_ts.py +384 -0
  29. mindsdb/api/executor/planner/query_plan.py +29 -0
  30. mindsdb/api/executor/planner/query_planner.py +837 -0
  31. mindsdb/api/executor/planner/query_prepare.py +527 -0
  32. mindsdb/api/executor/planner/step_result.py +19 -0
  33. mindsdb/api/executor/planner/steps.py +262 -0
  34. mindsdb/api/executor/planner/ts_utils.py +93 -0
  35. mindsdb/api/executor/planner/utils.py +126 -0
  36. mindsdb/api/executor/sql_query/result_set.py +312 -0
  37. mindsdb/api/executor/sql_query/sql_query.py +318 -0
  38. mindsdb/api/executor/sql_query/steps/__init__.py +13 -0
  39. mindsdb/api/executor/sql_query/steps/apply_predictor_step.py +424 -0
  40. mindsdb/api/executor/sql_query/steps/base.py +21 -0
  41. mindsdb/api/executor/sql_query/steps/delete_step.py +49 -0
  42. mindsdb/api/executor/sql_query/steps/fetch_dataframe.py +116 -0
  43. mindsdb/api/executor/sql_query/steps/insert_step.py +129 -0
  44. mindsdb/api/executor/sql_query/steps/join_step.py +109 -0
  45. mindsdb/api/executor/sql_query/steps/map_reduce_step.py +179 -0
  46. mindsdb/api/executor/sql_query/steps/multiple_step.py +24 -0
  47. mindsdb/api/executor/sql_query/steps/prepare_steps.py +59 -0
  48. mindsdb/api/executor/sql_query/steps/project_step.py +86 -0
  49. mindsdb/api/executor/sql_query/steps/sql_steps.py +41 -0
  50. mindsdb/api/executor/sql_query/steps/subselect_step.py +159 -0
  51. mindsdb/api/executor/sql_query/steps/union_step.py +56 -0
  52. mindsdb/api/executor/sql_query/steps/update_step.py +129 -0
  53. mindsdb/api/executor/utilities/functions.py +37 -0
  54. mindsdb/api/executor/utilities/sql.py +195 -0
  55. mindsdb/api/http/gui.py +94 -0
  56. mindsdb/api/http/gunicorn_wrapper.py +17 -0
  57. mindsdb/api/http/initialize.py +454 -0
  58. mindsdb/api/http/namespaces/agents.py +499 -0
  59. mindsdb/api/http/namespaces/analysis.py +117 -0
  60. mindsdb/api/http/namespaces/auth.py +167 -0
  61. mindsdb/api/http/namespaces/chatbots.py +318 -0
  62. mindsdb/api/http/namespaces/config.py +286 -0
  63. mindsdb/api/http/namespaces/configs/agents.py +3 -0
  64. mindsdb/api/http/namespaces/configs/analysis.py +3 -0
  65. mindsdb/api/http/namespaces/configs/auth.py +4 -0
  66. mindsdb/api/http/namespaces/configs/chatbots.py +3 -0
  67. mindsdb/api/http/namespaces/configs/config.py +3 -0
  68. mindsdb/api/http/namespaces/configs/databases.py +3 -0
  69. mindsdb/api/http/namespaces/configs/default.py +4 -0
  70. mindsdb/api/http/namespaces/configs/files.py +4 -0
  71. mindsdb/api/http/namespaces/configs/handlers.py +3 -0
  72. mindsdb/api/http/namespaces/configs/jobs.py +3 -0
  73. mindsdb/api/http/namespaces/configs/knowledge_bases.py +3 -0
  74. mindsdb/api/http/namespaces/configs/projects.py +3 -0
  75. mindsdb/api/http/namespaces/configs/skills.py +3 -0
  76. mindsdb/api/http/namespaces/configs/sql.py +3 -0
  77. mindsdb/api/http/namespaces/configs/tabs.py +3 -0
  78. mindsdb/api/http/namespaces/configs/tree.py +3 -0
  79. mindsdb/api/http/namespaces/configs/util.py +3 -0
  80. mindsdb/api/http/namespaces/configs/webhooks.py +3 -0
  81. mindsdb/api/http/namespaces/databases.py +394 -0
  82. mindsdb/api/http/namespaces/default.py +152 -0
  83. mindsdb/api/http/namespaces/file.py +191 -0
  84. mindsdb/api/http/namespaces/handlers.py +232 -0
  85. mindsdb/api/http/namespaces/jobs.py +99 -0
  86. mindsdb/api/http/namespaces/knowledge_bases.py +420 -0
  87. mindsdb/api/http/namespaces/models.py +297 -0
  88. mindsdb/api/http/namespaces/projects.py +46 -0
  89. mindsdb/api/http/namespaces/skills.py +170 -0
  90. mindsdb/api/http/namespaces/sql.py +162 -0
  91. mindsdb/api/http/namespaces/tab.py +131 -0
  92. mindsdb/api/http/namespaces/tree.py +105 -0
  93. mindsdb/api/http/namespaces/util.py +144 -0
  94. mindsdb/api/http/namespaces/views.py +153 -0
  95. mindsdb/api/http/namespaces/webhooks.py +29 -0
  96. mindsdb/api/http/start.py +67 -0
  97. mindsdb/api/http/utils.py +37 -0
  98. mindsdb/api/mongo/classes/__init__.py +5 -0
  99. mindsdb/api/mongo/classes/query_sql.py +18 -0
  100. mindsdb/api/mongo/classes/responder.py +45 -0
  101. mindsdb/api/mongo/classes/responder_collection.py +34 -0
  102. mindsdb/api/mongo/classes/scram.py +86 -0
  103. mindsdb/api/mongo/classes/session.py +23 -0
  104. mindsdb/api/mongo/functions/__init__.py +19 -0
  105. mindsdb/api/mongo/responders/__init__.py +73 -0
  106. mindsdb/api/mongo/responders/add_shard.py +13 -0
  107. mindsdb/api/mongo/responders/aggregate.py +90 -0
  108. mindsdb/api/mongo/responders/buildinfo.py +17 -0
  109. mindsdb/api/mongo/responders/coll_stats.py +62 -0
  110. mindsdb/api/mongo/responders/company_id.py +25 -0
  111. mindsdb/api/mongo/responders/connection_status.py +22 -0
  112. mindsdb/api/mongo/responders/count.py +21 -0
  113. mindsdb/api/mongo/responders/db_stats.py +31 -0
  114. mindsdb/api/mongo/responders/delete.py +105 -0
  115. mindsdb/api/mongo/responders/describe.py +23 -0
  116. mindsdb/api/mongo/responders/end_sessions.py +13 -0
  117. mindsdb/api/mongo/responders/find.py +175 -0
  118. mindsdb/api/mongo/responders/get_cmd_line_opts.py +18 -0
  119. mindsdb/api/mongo/responders/get_free_monitoring_status.py +14 -0
  120. mindsdb/api/mongo/responders/get_parameter.py +23 -0
  121. mindsdb/api/mongo/responders/getlog.py +14 -0
  122. mindsdb/api/mongo/responders/host_info.py +28 -0
  123. mindsdb/api/mongo/responders/insert.py +268 -0
  124. mindsdb/api/mongo/responders/is_master.py +20 -0
  125. mindsdb/api/mongo/responders/is_master_lower.py +13 -0
  126. mindsdb/api/mongo/responders/list_collections.py +55 -0
  127. mindsdb/api/mongo/responders/list_databases.py +37 -0
  128. mindsdb/api/mongo/responders/list_indexes.py +22 -0
  129. mindsdb/api/mongo/responders/ping.py +13 -0
  130. mindsdb/api/mongo/responders/recv_chunk_start.py +13 -0
  131. mindsdb/api/mongo/responders/replsetgetstatus.py +13 -0
  132. mindsdb/api/mongo/responders/sasl_continue.py +34 -0
  133. mindsdb/api/mongo/responders/sasl_start.py +33 -0
  134. mindsdb/api/mongo/responders/update_range_deletions.py +12 -0
  135. mindsdb/api/mongo/responders/whatsmyuri.py +18 -0
  136. mindsdb/api/mongo/server.py +388 -0
  137. mindsdb/api/mongo/start.py +15 -0
  138. mindsdb/api/mongo/utilities/mongodb_ast.py +257 -0
  139. mindsdb/api/mongo/utilities/mongodb_parser.py +145 -0
  140. mindsdb/api/mongo/utilities/mongodb_query.py +84 -0
  141. mindsdb/api/mysql/mysql_proxy/classes/client_capabilities.py +130 -0
  142. mindsdb/api/mysql/mysql_proxy/classes/fake_mysql_proxy/__init__.py +3 -0
  143. mindsdb/api/mysql/mysql_proxy/classes/fake_mysql_proxy/fake_mysql_proxy.py +37 -0
  144. mindsdb/api/mysql/mysql_proxy/classes/server_capabilities.py +22 -0
  145. mindsdb/api/mysql/mysql_proxy/classes/sql_statement_parser.py +151 -0
  146. mindsdb/api/mysql/mysql_proxy/data_types/__init__.py +0 -0
  147. mindsdb/api/mysql/mysql_proxy/data_types/mysql_datum.py +212 -0
  148. mindsdb/api/mysql/mysql_proxy/data_types/mysql_packet.py +166 -0
  149. mindsdb/api/mysql/mysql_proxy/data_types/mysql_packets/__init__.py +15 -0
  150. mindsdb/api/mysql/mysql_proxy/data_types/mysql_packets/binary_resultset_row_package.py +140 -0
  151. mindsdb/api/mysql/mysql_proxy/data_types/mysql_packets/column_count_packet.py +44 -0
  152. mindsdb/api/mysql/mysql_proxy/data_types/mysql_packets/column_definition_packet.py +94 -0
  153. mindsdb/api/mysql/mysql_proxy/data_types/mysql_packets/command_packet.py +159 -0
  154. mindsdb/api/mysql/mysql_proxy/data_types/mysql_packets/eof_packet.py +52 -0
  155. mindsdb/api/mysql/mysql_proxy/data_types/mysql_packets/err_packet.py +58 -0
  156. mindsdb/api/mysql/mysql_proxy/data_types/mysql_packets/fast_auth_fail_packet.py +20 -0
  157. mindsdb/api/mysql/mysql_proxy/data_types/mysql_packets/handshake_packet.py +80 -0
  158. mindsdb/api/mysql/mysql_proxy/data_types/mysql_packets/handshake_response_packet.py +96 -0
  159. mindsdb/api/mysql/mysql_proxy/data_types/mysql_packets/ok_packet.py +106 -0
  160. mindsdb/api/mysql/mysql_proxy/data_types/mysql_packets/password_answer.py +13 -0
  161. mindsdb/api/mysql/mysql_proxy/data_types/mysql_packets/resultset_row_package.py +54 -0
  162. mindsdb/api/mysql/mysql_proxy/data_types/mysql_packets/stmt_prepare_header.py +46 -0
  163. mindsdb/api/mysql/mysql_proxy/data_types/mysql_packets/switch_auth_packet.py +53 -0
  164. mindsdb/api/mysql/mysql_proxy/data_types/mysql_packets/switch_auth_response_packet.py +16 -0
  165. mindsdb/api/mysql/mysql_proxy/executor/__init__.py +2 -0
  166. mindsdb/api/mysql/mysql_proxy/executor/mysql_executor.py +138 -0
  167. mindsdb/api/mysql/mysql_proxy/external_libs/__init__.py +0 -0
  168. mindsdb/api/mysql/mysql_proxy/external_libs/mysql_scramble.py +135 -0
  169. mindsdb/api/mysql/mysql_proxy/libs/__init__.py +1 -0
  170. mindsdb/api/mysql/mysql_proxy/libs/constants/__init__.py +1 -0
  171. mindsdb/api/mysql/mysql_proxy/libs/constants/mysql.py +1030 -0
  172. mindsdb/api/mysql/mysql_proxy/mysql_proxy.py +930 -0
  173. mindsdb/api/mysql/mysql_proxy/utilities/__init__.py +1 -0
  174. mindsdb/api/mysql/mysql_proxy/utilities/exceptions.py +18 -0
  175. mindsdb/api/mysql/mysql_proxy/utilities/lightwood_dtype.py +48 -0
  176. mindsdb/api/mysql/start.py +13 -0
  177. mindsdb/api/postgres/__init__.py +0 -0
  178. mindsdb/api/postgres/postgres_proxy/__init__.py +0 -0
  179. mindsdb/api/postgres/postgres_proxy/executor/__init__.py +1 -0
  180. mindsdb/api/postgres/postgres_proxy/executor/executor.py +188 -0
  181. mindsdb/api/postgres/postgres_proxy/postgres_packets/__init__.py +0 -0
  182. mindsdb/api/postgres/postgres_proxy/postgres_packets/errors.py +322 -0
  183. mindsdb/api/postgres/postgres_proxy/postgres_packets/postgres_fields.py +34 -0
  184. mindsdb/api/postgres/postgres_proxy/postgres_packets/postgres_message.py +31 -0
  185. mindsdb/api/postgres/postgres_proxy/postgres_packets/postgres_message_formats.py +1265 -0
  186. mindsdb/api/postgres/postgres_proxy/postgres_packets/postgres_message_identifiers.py +31 -0
  187. mindsdb/api/postgres/postgres_proxy/postgres_packets/postgres_packets.py +253 -0
  188. mindsdb/api/postgres/postgres_proxy/postgres_proxy.py +479 -0
  189. mindsdb/api/postgres/postgres_proxy/utilities/__init__.py +10 -0
  190. mindsdb/api/postgres/start.py +11 -0
  191. mindsdb/integrations/__init__.py +0 -0
  192. mindsdb/integrations/handlers/__init__.py +0 -0
  193. mindsdb/integrations/handlers/access_handler/__about__.py +9 -0
  194. mindsdb/integrations/handlers/access_handler/__init__.py +20 -0
  195. mindsdb/integrations/handlers/access_handler/access_handler.py +197 -0
  196. mindsdb/integrations/handlers/access_handler/connection_args.py +15 -0
  197. mindsdb/integrations/handlers/access_handler/icon.svg +19 -0
  198. mindsdb/integrations/handlers/access_handler/requirements.txt +2 -0
  199. mindsdb/integrations/handlers/access_handler/tests/__init__.py +0 -0
  200. mindsdb/integrations/handlers/access_handler/tests/test_access_handler.py +32 -0
  201. mindsdb/integrations/handlers/aerospike_handler/__about__.py +9 -0
  202. mindsdb/integrations/handlers/aerospike_handler/__init__.py +30 -0
  203. mindsdb/integrations/handlers/aerospike_handler/aerospike_handler.py +236 -0
  204. mindsdb/integrations/handlers/aerospike_handler/connection_args.py +46 -0
  205. mindsdb/integrations/handlers/aerospike_handler/icon.svg +11 -0
  206. mindsdb/integrations/handlers/aerospike_handler/requirements.txt +1 -0
  207. mindsdb/integrations/handlers/aerospike_handler/tests/__init__.py +0 -0
  208. mindsdb/integrations/handlers/aerospike_handler/tests/test_aerospike_handler.py +36 -0
  209. mindsdb/integrations/handlers/airtable_handler/__about__.py +9 -0
  210. mindsdb/integrations/handlers/airtable_handler/__init__.py +20 -0
  211. mindsdb/integrations/handlers/airtable_handler/airtable_handler.py +211 -0
  212. mindsdb/integrations/handlers/airtable_handler/connection_args.py +26 -0
  213. mindsdb/integrations/handlers/airtable_handler/icon.svg +11 -0
  214. mindsdb/integrations/handlers/airtable_handler/tests/__init__.py +0 -0
  215. mindsdb/integrations/handlers/airtable_handler/tests/test_airtable_handler.py +34 -0
  216. mindsdb/integrations/handlers/altibase_handler/__about__.py +9 -0
  217. mindsdb/integrations/handlers/altibase_handler/__init__.py +20 -0
  218. mindsdb/integrations/handlers/altibase_handler/altibase_handler.py +253 -0
  219. mindsdb/integrations/handlers/altibase_handler/connection_args.py +50 -0
  220. mindsdb/integrations/handlers/altibase_handler/icon.svg +3 -0
  221. mindsdb/integrations/handlers/altibase_handler/requirements.txt +2 -0
  222. mindsdb/integrations/handlers/altibase_handler/tests/__init__.py +0 -0
  223. mindsdb/integrations/handlers/altibase_handler/tests/test_altibase_handler.py +67 -0
  224. mindsdb/integrations/handlers/altibase_handler/tests/test_altibase_handler_dsn.py +68 -0
  225. mindsdb/integrations/handlers/anomaly_detection_handler/__about__.py +9 -0
  226. mindsdb/integrations/handlers/anomaly_detection_handler/__init__.py +19 -0
  227. mindsdb/integrations/handlers/anomaly_detection_handler/anomaly_detection_handler.py +180 -0
  228. mindsdb/integrations/handlers/anomaly_detection_handler/icon.svg +13 -0
  229. mindsdb/integrations/handlers/anomaly_detection_handler/requirements.txt +4 -0
  230. mindsdb/integrations/handlers/anomaly_detection_handler/utils.py +21 -0
  231. mindsdb/integrations/handlers/anthropic_handler/__about__.py +9 -0
  232. mindsdb/integrations/handlers/anthropic_handler/__init__.py +22 -0
  233. mindsdb/integrations/handlers/anthropic_handler/anthropic_handler.py +108 -0
  234. mindsdb/integrations/handlers/anthropic_handler/icon.svg +3 -0
  235. mindsdb/integrations/handlers/anthropic_handler/requirements.txt +1 -0
  236. mindsdb/integrations/handlers/anyscale_endpoints_handler/__about__.py +9 -0
  237. mindsdb/integrations/handlers/anyscale_endpoints_handler/__init__.py +20 -0
  238. mindsdb/integrations/handlers/anyscale_endpoints_handler/anyscale_endpoints_handler.py +290 -0
  239. mindsdb/integrations/handlers/anyscale_endpoints_handler/creation_args.py +14 -0
  240. mindsdb/integrations/handlers/anyscale_endpoints_handler/icon.svg +4 -0
  241. mindsdb/integrations/handlers/anyscale_endpoints_handler/requirements.txt +3 -0
  242. mindsdb/integrations/handlers/anyscale_endpoints_handler/settings.py +51 -0
  243. mindsdb/integrations/handlers/anyscale_endpoints_handler/tests/__init__.py +0 -0
  244. mindsdb/integrations/handlers/anyscale_endpoints_handler/tests/test_anyscale_endpoints_handler.py +212 -0
  245. mindsdb/integrations/handlers/apache_doris_handler/__about__.py +9 -0
  246. mindsdb/integrations/handlers/apache_doris_handler/__init__.py +20 -0
  247. mindsdb/integrations/handlers/apache_doris_handler/apache_doris_handler.py +10 -0
  248. mindsdb/integrations/handlers/apache_doris_handler/icon.svg +5 -0
  249. mindsdb/integrations/handlers/apache_doris_handler/requirements.txt +1 -0
  250. mindsdb/integrations/handlers/aqicn_handler/__about__.py +9 -0
  251. mindsdb/integrations/handlers/aqicn_handler/__init__.py +28 -0
  252. mindsdb/integrations/handlers/aqicn_handler/aqicn.py +35 -0
  253. mindsdb/integrations/handlers/aqicn_handler/aqicn_handler.py +97 -0
  254. mindsdb/integrations/handlers/aqicn_handler/aqicn_tables.py +425 -0
  255. mindsdb/integrations/handlers/aqicn_handler/connection_args.py +18 -0
  256. mindsdb/integrations/handlers/aqicn_handler/icon.png +0 -0
  257. mindsdb/integrations/handlers/aqicn_handler/tests/__init__.py +0 -0
  258. mindsdb/integrations/handlers/athena_handler/__about__.py +9 -0
  259. mindsdb/integrations/handlers/athena_handler/__init__.py +20 -0
  260. mindsdb/integrations/handlers/athena_handler/athena_handler.py +218 -0
  261. mindsdb/integrations/handlers/athena_handler/connection_args.py +51 -0
  262. mindsdb/integrations/handlers/athena_handler/icon.svg +22 -0
  263. mindsdb/integrations/handlers/athena_handler/tests/__init__.py +0 -0
  264. mindsdb/integrations/handlers/athena_handler/tests/test_athena_handler.py +85 -0
  265. mindsdb/integrations/handlers/aurora_handler/__about__.py +9 -0
  266. mindsdb/integrations/handlers/aurora_handler/__init__.py +20 -0
  267. mindsdb/integrations/handlers/aurora_handler/aurora_handler.py +140 -0
  268. mindsdb/integrations/handlers/aurora_handler/connection_args.py +50 -0
  269. mindsdb/integrations/handlers/aurora_handler/icon.svg +7 -0
  270. mindsdb/integrations/handlers/aurora_handler/requirements.txt +1 -0
  271. mindsdb/integrations/handlers/aurora_handler/tests/__init__.py +0 -0
  272. mindsdb/integrations/handlers/aurora_handler/tests/test_aurora_mysql_handler.py +37 -0
  273. mindsdb/integrations/handlers/aurora_handler/tests/test_aurora_postgres_handler.py +37 -0
  274. mindsdb/integrations/handlers/autogluon_handler/__about__.py +9 -0
  275. mindsdb/integrations/handlers/autogluon_handler/__init__.py +20 -0
  276. mindsdb/integrations/handlers/autogluon_handler/autogluon_handler.py +57 -0
  277. mindsdb/integrations/handlers/autogluon_handler/config.py +17 -0
  278. mindsdb/integrations/handlers/autogluon_handler/icon.svg +3 -0
  279. mindsdb/integrations/handlers/autogluon_handler/requirements.txt +2 -0
  280. mindsdb/integrations/handlers/autokeras_handler/__about__.py +9 -0
  281. mindsdb/integrations/handlers/autokeras_handler/__init__.py +22 -0
  282. mindsdb/integrations/handlers/autokeras_handler/autokeras_handler.py +139 -0
  283. mindsdb/integrations/handlers/autokeras_handler/icon.svg +9 -0
  284. mindsdb/integrations/handlers/autokeras_handler/requirements.txt +2 -0
  285. mindsdb/integrations/handlers/autosklearn_handler/__about__.py +9 -0
  286. mindsdb/integrations/handlers/autosklearn_handler/__init__.py +19 -0
  287. mindsdb/integrations/handlers/autosklearn_handler/autosklearn_handler.py +53 -0
  288. mindsdb/integrations/handlers/autosklearn_handler/config.py +29 -0
  289. mindsdb/integrations/handlers/autosklearn_handler/icon.png +0 -0
  290. mindsdb/integrations/handlers/autosklearn_handler/requirements.txt +2 -0
  291. mindsdb/integrations/handlers/azure_blob_handler/__about__.py +9 -0
  292. mindsdb/integrations/handlers/azure_blob_handler/__init__.py +20 -0
  293. mindsdb/integrations/handlers/azure_blob_handler/azure_blob_handler.py +346 -0
  294. mindsdb/integrations/handlers/azure_blob_handler/connection_args.py +25 -0
  295. mindsdb/integrations/handlers/azure_blob_handler/icon.svg +30 -0
  296. mindsdb/integrations/handlers/azure_blob_handler/requirements.txt +1 -0
  297. mindsdb/integrations/handlers/bedrock_handler/__about__.py +9 -0
  298. mindsdb/integrations/handlers/bedrock_handler/__init__.py +19 -0
  299. mindsdb/integrations/handlers/bedrock_handler/bedrock_handler.py +328 -0
  300. mindsdb/integrations/handlers/bedrock_handler/icon.svg +9 -0
  301. mindsdb/integrations/handlers/bedrock_handler/requirements.txt +1 -0
  302. mindsdb/integrations/handlers/bedrock_handler/settings.py +287 -0
  303. mindsdb/integrations/handlers/bedrock_handler/utilities.py +46 -0
  304. mindsdb/integrations/handlers/bigquery_handler/__about__.py +9 -0
  305. mindsdb/integrations/handlers/bigquery_handler/__init__.py +21 -0
  306. mindsdb/integrations/handlers/bigquery_handler/bigquery_handler.py +181 -0
  307. mindsdb/integrations/handlers/bigquery_handler/connection_args.py +30 -0
  308. mindsdb/integrations/handlers/bigquery_handler/icon.svg +5 -0
  309. mindsdb/integrations/handlers/bigquery_handler/requirements.txt +2 -0
  310. mindsdb/integrations/handlers/bigquery_handler/tests/__init__.py +0 -0
  311. mindsdb/integrations/handlers/bigquery_handler/tests/test_bigquery_handler.py +221 -0
  312. mindsdb/integrations/handlers/binance_handler/__about__.py +9 -0
  313. mindsdb/integrations/handlers/binance_handler/__init__.py +19 -0
  314. mindsdb/integrations/handlers/binance_handler/binance_handler.py +144 -0
  315. mindsdb/integrations/handlers/binance_handler/binance_tables.py +175 -0
  316. mindsdb/integrations/handlers/binance_handler/icon.svg +14 -0
  317. mindsdb/integrations/handlers/binance_handler/requirements.txt +1 -0
  318. mindsdb/integrations/handlers/box_handler/__about__.py +9 -0
  319. mindsdb/integrations/handlers/box_handler/__init__.py +30 -0
  320. mindsdb/integrations/handlers/box_handler/box_handler.py +257 -0
  321. mindsdb/integrations/handlers/box_handler/connection_args.py +17 -0
  322. mindsdb/integrations/handlers/box_handler/icon.svg +1 -0
  323. mindsdb/integrations/handlers/box_handler/requirements.txt +1 -0
  324. mindsdb/integrations/handlers/byom_handler/__about__.py +9 -0
  325. mindsdb/integrations/handlers/byom_handler/__init__.py +21 -0
  326. mindsdb/integrations/handlers/byom_handler/byom_handler.py +678 -0
  327. mindsdb/integrations/handlers/byom_handler/connection_args.py +19 -0
  328. mindsdb/integrations/handlers/byom_handler/icon.svg +13 -0
  329. mindsdb/integrations/handlers/byom_handler/proc_wrapper.py +229 -0
  330. mindsdb/integrations/handlers/byom_handler/requirements.txt +2 -0
  331. mindsdb/integrations/handlers/cassandra_handler/__about__.py +9 -0
  332. mindsdb/integrations/handlers/cassandra_handler/__init__.py +21 -0
  333. mindsdb/integrations/handlers/cassandra_handler/cassandra_handler.py +27 -0
  334. mindsdb/integrations/handlers/cassandra_handler/connection_args.py +50 -0
  335. mindsdb/integrations/handlers/cassandra_handler/icon.svg +33 -0
  336. mindsdb/integrations/handlers/cassandra_handler/requirements.txt +1 -0
  337. mindsdb/integrations/handlers/cassandra_handler/tests/__init__.py +0 -0
  338. mindsdb/integrations/handlers/cassandra_handler/tests/test_cassandra_handler.py +39 -0
  339. mindsdb/integrations/handlers/chromadb_handler/__about__.py +9 -0
  340. mindsdb/integrations/handlers/chromadb_handler/__init__.py +29 -0
  341. mindsdb/integrations/handlers/chromadb_handler/chromadb_handler.py +491 -0
  342. mindsdb/integrations/handlers/chromadb_handler/connection_args.py +28 -0
  343. mindsdb/integrations/handlers/chromadb_handler/icon.png +0 -0
  344. mindsdb/integrations/handlers/chromadb_handler/requirements.txt +1 -0
  345. mindsdb/integrations/handlers/chromadb_handler/settings.py +62 -0
  346. mindsdb/integrations/handlers/chromadb_handler/tests/__init__.py +0 -0
  347. mindsdb/integrations/handlers/ckan_handler/__about__.py +9 -0
  348. mindsdb/integrations/handlers/ckan_handler/__init__.py +28 -0
  349. mindsdb/integrations/handlers/ckan_handler/ckan_handler.py +310 -0
  350. mindsdb/integrations/handlers/ckan_handler/connection_args.py +22 -0
  351. mindsdb/integrations/handlers/ckan_handler/icon.png +0 -0
  352. mindsdb/integrations/handlers/ckan_handler/requirements.txt +1 -0
  353. mindsdb/integrations/handlers/ckan_handler/tests/__init__.py +0 -0
  354. mindsdb/integrations/handlers/ckan_handler/tests/test_ckan_handler.py +156 -0
  355. mindsdb/integrations/handlers/clickhouse_handler/__about__.py +9 -0
  356. mindsdb/integrations/handlers/clickhouse_handler/__init__.py +20 -0
  357. mindsdb/integrations/handlers/clickhouse_handler/clickhouse_handler.py +168 -0
  358. mindsdb/integrations/handlers/clickhouse_handler/connection_args.py +53 -0
  359. mindsdb/integrations/handlers/clickhouse_handler/icon.svg +4 -0
  360. mindsdb/integrations/handlers/clickhouse_handler/requirements.txt +1 -0
  361. mindsdb/integrations/handlers/clickhouse_handler/tests/__init__.py +0 -0
  362. mindsdb/integrations/handlers/clickhouse_handler/tests/test_clickhouse_handler.py +41 -0
  363. mindsdb/integrations/handlers/clipdrop_handler/__about__.py +9 -0
  364. mindsdb/integrations/handlers/clipdrop_handler/__init__.py +22 -0
  365. mindsdb/integrations/handlers/clipdrop_handler/clipdrop.py +87 -0
  366. mindsdb/integrations/handlers/clipdrop_handler/clipdrop_handler.py +193 -0
  367. mindsdb/integrations/handlers/clipdrop_handler/icon.svg +6 -0
  368. mindsdb/integrations/handlers/cloud_spanner_handler/__about__.py +9 -0
  369. mindsdb/integrations/handlers/cloud_spanner_handler/__init__.py +27 -0
  370. mindsdb/integrations/handlers/cloud_spanner_handler/cloud_spanner_handler.py +219 -0
  371. mindsdb/integrations/handlers/cloud_spanner_handler/connection_args.py +33 -0
  372. mindsdb/integrations/handlers/cloud_spanner_handler/icon.png +0 -0
  373. mindsdb/integrations/handlers/cloud_spanner_handler/requirements.txt +2 -0
  374. mindsdb/integrations/handlers/cloud_spanner_handler/tests/__init__.py +0 -0
  375. mindsdb/integrations/handlers/cloud_spanner_handler/tests/test_cloud_spanner_handler.py +50 -0
  376. mindsdb/integrations/handlers/cloud_sql_handler/__about__.py +9 -0
  377. mindsdb/integrations/handlers/cloud_sql_handler/__init__.py +20 -0
  378. mindsdb/integrations/handlers/cloud_sql_handler/cloud_sql_handler.py +123 -0
  379. mindsdb/integrations/handlers/cloud_sql_handler/connection_args.py +41 -0
  380. mindsdb/integrations/handlers/cloud_sql_handler/icon.png +0 -0
  381. mindsdb/integrations/handlers/cloud_sql_handler/requirements.txt +2 -0
  382. mindsdb/integrations/handlers/cloud_sql_handler/tests/__init__.py +0 -0
  383. mindsdb/integrations/handlers/cloud_sql_handler/tests/test_cloud_sql_mssql_handler.py +37 -0
  384. mindsdb/integrations/handlers/cloud_sql_handler/tests/test_cloud_sql_mysql_handler.py +37 -0
  385. mindsdb/integrations/handlers/cockroach_handler/__about__.py +9 -0
  386. mindsdb/integrations/handlers/cockroach_handler/__init__.py +19 -0
  387. mindsdb/integrations/handlers/cockroach_handler/cockroach_handler.py +11 -0
  388. mindsdb/integrations/handlers/cockroach_handler/icon.svg +11 -0
  389. mindsdb/integrations/handlers/cockroach_handler/tests/__init__.py +0 -0
  390. mindsdb/integrations/handlers/cockroach_handler/tests/test_cockroachdb_handler.py +34 -0
  391. mindsdb/integrations/handlers/cohere_handler/__about__.py +9 -0
  392. mindsdb/integrations/handlers/cohere_handler/__init__.py +21 -0
  393. mindsdb/integrations/handlers/cohere_handler/cohere_handler.py +88 -0
  394. mindsdb/integrations/handlers/cohere_handler/icon.svg +12 -0
  395. mindsdb/integrations/handlers/cohere_handler/requirements.txt +1 -0
  396. mindsdb/integrations/handlers/coinbase_handler/__about__.py +9 -0
  397. mindsdb/integrations/handlers/coinbase_handler/__init__.py +21 -0
  398. mindsdb/integrations/handlers/coinbase_handler/coinbase_handler.py +138 -0
  399. mindsdb/integrations/handlers/coinbase_handler/coinbase_tables.py +56 -0
  400. mindsdb/integrations/handlers/coinbase_handler/connection_args.py +34 -0
  401. mindsdb/integrations/handlers/coinbase_handler/icon.svg +3 -0
  402. mindsdb/integrations/handlers/coinbase_handler/requirements.txt +0 -0
  403. mindsdb/integrations/handlers/confluence_handler/__about__.py +9 -0
  404. mindsdb/integrations/handlers/confluence_handler/__init__.py +29 -0
  405. mindsdb/integrations/handlers/confluence_handler/confluence_handler.py +102 -0
  406. mindsdb/integrations/handlers/confluence_handler/confluence_table.py +193 -0
  407. mindsdb/integrations/handlers/confluence_handler/connection_args.py +32 -0
  408. mindsdb/integrations/handlers/confluence_handler/icon.svg +14 -0
  409. mindsdb/integrations/handlers/confluence_handler/requirements.txt +1 -0
  410. mindsdb/integrations/handlers/confluence_handler/tests/__init__.py +0 -0
  411. mindsdb/integrations/handlers/confluence_handler/tests/test_confluence_handler.py +68 -0
  412. mindsdb/integrations/handlers/couchbase_handler/__about__.py +9 -0
  413. mindsdb/integrations/handlers/couchbase_handler/__init__.py +30 -0
  414. mindsdb/integrations/handlers/couchbase_handler/connection_args.py +31 -0
  415. mindsdb/integrations/handlers/couchbase_handler/couchbase_handler.py +208 -0
  416. mindsdb/integrations/handlers/couchbase_handler/icon.svg +3 -0
  417. mindsdb/integrations/handlers/couchbase_handler/requirements.txt +1 -0
  418. mindsdb/integrations/handlers/couchbase_handler/tests/__init__.py +0 -0
  419. mindsdb/integrations/handlers/couchbase_handler/tests/test_couchbase_handler.py +39 -0
  420. mindsdb/integrations/handlers/couchbasevector_handler/__about__.py +9 -0
  421. mindsdb/integrations/handlers/couchbasevector_handler/__init__.py +30 -0
  422. mindsdb/integrations/handlers/couchbasevector_handler/connection_args.py +31 -0
  423. mindsdb/integrations/handlers/couchbasevector_handler/couchbasevector_handler.py +472 -0
  424. mindsdb/integrations/handlers/couchbasevector_handler/icon.svg +3 -0
  425. mindsdb/integrations/handlers/couchbasevector_handler/requirements.txt +1 -0
  426. mindsdb/integrations/handlers/couchbasevector_handler/tests/__init__.py +0 -0
  427. mindsdb/integrations/handlers/crate_handler/__about__.py +9 -0
  428. mindsdb/integrations/handlers/crate_handler/__init__.py +27 -0
  429. mindsdb/integrations/handlers/crate_handler/crate_handler.py +226 -0
  430. mindsdb/integrations/handlers/crate_handler/icon.svg +14 -0
  431. mindsdb/integrations/handlers/crate_handler/requirements.txt +2 -0
  432. mindsdb/integrations/handlers/crate_handler/tests/__init__.py +0 -0
  433. mindsdb/integrations/handlers/crate_handler/tests/test_crate_handler.py +46 -0
  434. mindsdb/integrations/handlers/d0lt_handler/__about__.py +9 -0
  435. mindsdb/integrations/handlers/d0lt_handler/__init__.py +29 -0
  436. mindsdb/integrations/handlers/d0lt_handler/d0lt_handler.py +12 -0
  437. mindsdb/integrations/handlers/d0lt_handler/icon.svg +6 -0
  438. mindsdb/integrations/handlers/d0lt_handler/requirements.txt +1 -0
  439. mindsdb/integrations/handlers/d0lt_handler/tests/__init__.py +0 -0
  440. mindsdb/integrations/handlers/d0lt_handler/tests/test_d0lt_handler.py +53 -0
  441. mindsdb/integrations/handlers/databend_handler/__about__.py +9 -0
  442. mindsdb/integrations/handlers/databend_handler/__init__.py +20 -0
  443. mindsdb/integrations/handlers/databend_handler/connection_args.py +36 -0
  444. mindsdb/integrations/handlers/databend_handler/databend_handler.py +199 -0
  445. mindsdb/integrations/handlers/databend_handler/icon.svg +9 -0
  446. mindsdb/integrations/handlers/databend_handler/requirements.txt +1 -0
  447. mindsdb/integrations/handlers/databend_handler/tests/__init__.py +1 -0
  448. mindsdb/integrations/handlers/databend_handler/tests/test_databend_handler.py +37 -0
  449. mindsdb/integrations/handlers/databricks_handler/__about__.py +9 -0
  450. mindsdb/integrations/handlers/databricks_handler/__init__.py +29 -0
  451. mindsdb/integrations/handlers/databricks_handler/connection_args.py +58 -0
  452. mindsdb/integrations/handlers/databricks_handler/databricks_handler.py +261 -0
  453. mindsdb/integrations/handlers/databricks_handler/icon.svg +3 -0
  454. mindsdb/integrations/handlers/databricks_handler/requirements.txt +1 -0
  455. mindsdb/integrations/handlers/databricks_handler/tests/__init__.py +0 -0
  456. mindsdb/integrations/handlers/databricks_handler/tests/test_databricks_handler.py +37 -0
  457. mindsdb/integrations/handlers/datastax_handler/__about__.py +9 -0
  458. mindsdb/integrations/handlers/datastax_handler/__init__.py +27 -0
  459. mindsdb/integrations/handlers/datastax_handler/datastax_handler.py +12 -0
  460. mindsdb/integrations/handlers/datastax_handler/icon.svg +4 -0
  461. mindsdb/integrations/handlers/datastax_handler/requirements.txt +1 -0
  462. mindsdb/integrations/handlers/datastax_handler/tests/__init__.py +0 -0
  463. mindsdb/integrations/handlers/datastax_handler/tests/test_cassandra_handler.py +38 -0
  464. mindsdb/integrations/handlers/db2_handler/__about__.py +9 -0
  465. mindsdb/integrations/handlers/db2_handler/__init__.py +29 -0
  466. mindsdb/integrations/handlers/db2_handler/connection_args.py +53 -0
  467. mindsdb/integrations/handlers/db2_handler/db2_handler.py +235 -0
  468. mindsdb/integrations/handlers/db2_handler/icon.svg +49 -0
  469. mindsdb/integrations/handlers/db2_handler/requirements.txt +2 -0
  470. mindsdb/integrations/handlers/db2_handler/tests/__init__.py +0 -0
  471. mindsdb/integrations/handlers/db2_handler/tests/test_db2_handler.py +46 -0
  472. mindsdb/integrations/handlers/derby_handler/__about__.py +9 -0
  473. mindsdb/integrations/handlers/derby_handler/__init__.py +21 -0
  474. mindsdb/integrations/handlers/derby_handler/connection_args.py +50 -0
  475. mindsdb/integrations/handlers/derby_handler/derby_handler.py +203 -0
  476. mindsdb/integrations/handlers/derby_handler/icon.svg +21 -0
  477. mindsdb/integrations/handlers/derby_handler/requirements.txt +1 -0
  478. mindsdb/integrations/handlers/derby_handler/tests/__init__.py +0 -0
  479. mindsdb/integrations/handlers/derby_handler/tests/test_derby_handler.py +46 -0
  480. mindsdb/integrations/handlers/discord_handler/__about__.py +9 -0
  481. mindsdb/integrations/handlers/discord_handler/__init__.py +27 -0
  482. mindsdb/integrations/handlers/discord_handler/discord_handler.py +187 -0
  483. mindsdb/integrations/handlers/discord_handler/discord_tables.py +189 -0
  484. mindsdb/integrations/handlers/discord_handler/icon.svg +3 -0
  485. mindsdb/integrations/handlers/discord_handler/requirements.txt +0 -0
  486. mindsdb/integrations/handlers/discord_handler/tests/__init__.py +0 -0
  487. mindsdb/integrations/handlers/discord_handler/tests/test_discord.py +59 -0
  488. mindsdb/integrations/handlers/dockerhub_handler/__about__.py +9 -0
  489. mindsdb/integrations/handlers/dockerhub_handler/__init__.py +28 -0
  490. mindsdb/integrations/handlers/dockerhub_handler/connection_args.py +25 -0
  491. mindsdb/integrations/handlers/dockerhub_handler/dockerhub.py +55 -0
  492. mindsdb/integrations/handlers/dockerhub_handler/dockerhub_handler.py +112 -0
  493. mindsdb/integrations/handlers/dockerhub_handler/dockerhub_tables.py +509 -0
  494. mindsdb/integrations/handlers/dockerhub_handler/icon.svg +12 -0
  495. mindsdb/integrations/handlers/documentdb_handler/__about__.py +9 -0
  496. mindsdb/integrations/handlers/documentdb_handler/__init__.py +21 -0
  497. mindsdb/integrations/handlers/documentdb_handler/connection_args.py +53 -0
  498. mindsdb/integrations/handlers/documentdb_handler/documentdb_handler.py +41 -0
  499. mindsdb/integrations/handlers/documentdb_handler/icon.svg +15 -0
  500. mindsdb/integrations/handlers/dremio_handler/__about__.py +9 -0
  501. mindsdb/integrations/handlers/dremio_handler/__init__.py +20 -0
  502. mindsdb/integrations/handlers/dremio_handler/connection_args.py +31 -0
  503. mindsdb/integrations/handlers/dremio_handler/dremio_handler.py +222 -0
  504. mindsdb/integrations/handlers/dremio_handler/icon.svg +16 -0
  505. mindsdb/integrations/handlers/dremio_handler/requirements.txt +1 -0
  506. mindsdb/integrations/handlers/dremio_handler/tests/__init__.py +0 -0
  507. mindsdb/integrations/handlers/dremio_handler/tests/test_dremio_handler.py +35 -0
  508. mindsdb/integrations/handlers/dropbox_handler/__about__.py +9 -0
  509. mindsdb/integrations/handlers/dropbox_handler/__init__.py +30 -0
  510. mindsdb/integrations/handlers/dropbox_handler/connection_args.py +17 -0
  511. mindsdb/integrations/handlers/dropbox_handler/dropbox_handler.py +253 -0
  512. mindsdb/integrations/handlers/dropbox_handler/icon.svg +4 -0
  513. mindsdb/integrations/handlers/dropbox_handler/requirements.txt +1 -0
  514. mindsdb/integrations/handlers/dropbox_handler/tests/__init__.py +0 -0
  515. mindsdb/integrations/handlers/dropbox_handler/tests/test_dropbox_handler.py +18 -0
  516. mindsdb/integrations/handlers/druid_handler/__about__.py +9 -0
  517. mindsdb/integrations/handlers/druid_handler/__init__.py +20 -0
  518. mindsdb/integrations/handlers/druid_handler/connection_args.py +51 -0
  519. mindsdb/integrations/handlers/druid_handler/druid_handler.py +216 -0
  520. mindsdb/integrations/handlers/druid_handler/icon.svg +6 -0
  521. mindsdb/integrations/handlers/druid_handler/requirements.txt +1 -0
  522. mindsdb/integrations/handlers/druid_handler/tests/__init__.py +0 -0
  523. mindsdb/integrations/handlers/druid_handler/tests/test_druid_handler.py +35 -0
  524. mindsdb/integrations/handlers/dspy_handler/__about__.py +9 -0
  525. mindsdb/integrations/handlers/dspy_handler/__init__.py +19 -0
  526. mindsdb/integrations/handlers/dspy_handler/dspy_handler.py +250 -0
  527. mindsdb/integrations/handlers/dspy_handler/icon.svg +14 -0
  528. mindsdb/integrations/handlers/dspy_handler/requirements.txt +8 -0
  529. mindsdb/integrations/handlers/duckdb_handler/__about__.py +9 -0
  530. mindsdb/integrations/handlers/duckdb_handler/__init__.py +28 -0
  531. mindsdb/integrations/handlers/duckdb_handler/connection_args.py +17 -0
  532. mindsdb/integrations/handlers/duckdb_handler/duckdb_handler.py +170 -0
  533. mindsdb/integrations/handlers/duckdb_handler/icon.svg +10 -0
  534. mindsdb/integrations/handlers/duckdb_handler/tests/__init__.py +0 -0
  535. mindsdb/integrations/handlers/duckdb_handler/tests/test_duckdb_handler.py +48 -0
  536. mindsdb/integrations/handlers/dummy_data_handler/__about__.py +9 -0
  537. mindsdb/integrations/handlers/dummy_data_handler/__init__.py +19 -0
  538. mindsdb/integrations/handlers/dummy_data_handler/dummy_data_handler.py +97 -0
  539. mindsdb/integrations/handlers/dummy_data_handler/icon.svg +3 -0
  540. mindsdb/integrations/handlers/dynamodb_handler/__about__.py +9 -0
  541. mindsdb/integrations/handlers/dynamodb_handler/__init__.py +20 -0
  542. mindsdb/integrations/handlers/dynamodb_handler/connection_args.py +39 -0
  543. mindsdb/integrations/handlers/dynamodb_handler/dynamodb_handler.py +293 -0
  544. mindsdb/integrations/handlers/dynamodb_handler/icon.svg +17 -0
  545. mindsdb/integrations/handlers/dynamodb_handler/tests/__init__.py +0 -0
  546. mindsdb/integrations/handlers/dynamodb_handler/tests/test_dynamodb_handler.py +34 -0
  547. mindsdb/integrations/handlers/edgelessdb_handler/__about__.py +9 -0
  548. mindsdb/integrations/handlers/edgelessdb_handler/__init__.py +21 -0
  549. mindsdb/integrations/handlers/edgelessdb_handler/connection_args.py +45 -0
  550. mindsdb/integrations/handlers/edgelessdb_handler/edgelessdb_handler.py +12 -0
  551. mindsdb/integrations/handlers/edgelessdb_handler/icon.svg +13 -0
  552. mindsdb/integrations/handlers/edgelessdb_handler/requirements.txt +1 -0
  553. mindsdb/integrations/handlers/edgelessdb_handler/tests/__init__.py +0 -0
  554. mindsdb/integrations/handlers/edgelessdb_handler/tests/test_edgelessdb_handler.py +66 -0
  555. mindsdb/integrations/handlers/elasticsearch_handler/__about__.py +9 -0
  556. mindsdb/integrations/handlers/elasticsearch_handler/__init__.py +30 -0
  557. mindsdb/integrations/handlers/elasticsearch_handler/connection_args.py +38 -0
  558. mindsdb/integrations/handlers/elasticsearch_handler/elasticsearch_handler.py +288 -0
  559. mindsdb/integrations/handlers/elasticsearch_handler/icon.svg +16 -0
  560. mindsdb/integrations/handlers/elasticsearch_handler/requirements.txt +2 -0
  561. mindsdb/integrations/handlers/elasticsearch_handler/tests/__init__.py +0 -0
  562. mindsdb/integrations/handlers/elasticsearch_handler/tests/test_elasticsearch_handler.py +32 -0
  563. mindsdb/integrations/handlers/email_handler/__about__.py +9 -0
  564. mindsdb/integrations/handlers/email_handler/__init__.py +21 -0
  565. mindsdb/integrations/handlers/email_handler/email_client.py +165 -0
  566. mindsdb/integrations/handlers/email_handler/email_handler.py +99 -0
  567. mindsdb/integrations/handlers/email_handler/email_ingestor.py +86 -0
  568. mindsdb/integrations/handlers/email_handler/email_tables.py +159 -0
  569. mindsdb/integrations/handlers/email_handler/icon.png +0 -0
  570. mindsdb/integrations/handlers/email_handler/requirements.txt +2 -0
  571. mindsdb/integrations/handlers/email_handler/settings.py +60 -0
  572. mindsdb/integrations/handlers/empress_handler/__about__.py +9 -0
  573. mindsdb/integrations/handlers/empress_handler/__init__.py +20 -0
  574. mindsdb/integrations/handlers/empress_handler/connection_args.py +42 -0
  575. mindsdb/integrations/handlers/empress_handler/empress_handler.py +211 -0
  576. mindsdb/integrations/handlers/empress_handler/icon.png +0 -0
  577. mindsdb/integrations/handlers/empress_handler/requirements.txt +1 -0
  578. mindsdb/integrations/handlers/empress_handler/tests/__init__.py +0 -0
  579. mindsdb/integrations/handlers/empress_handler/tests/test_empress_handler.py +55 -0
  580. mindsdb/integrations/handlers/eventbrite_handler/__about__.py +9 -0
  581. mindsdb/integrations/handlers/eventbrite_handler/__init__.py +27 -0
  582. mindsdb/integrations/handlers/eventbrite_handler/eventbrite_handler.py +94 -0
  583. mindsdb/integrations/handlers/eventbrite_handler/eventbrite_tables.py +612 -0
  584. mindsdb/integrations/handlers/eventbrite_handler/icon.png +0 -0
  585. mindsdb/integrations/handlers/eventbrite_handler/requirements.txt +1 -0
  586. mindsdb/integrations/handlers/eventstoredb_handler/__about__.py +9 -0
  587. mindsdb/integrations/handlers/eventstoredb_handler/__init__.py +27 -0
  588. mindsdb/integrations/handlers/eventstoredb_handler/eventstoredb_handler.py +216 -0
  589. mindsdb/integrations/handlers/eventstoredb_handler/icon.svg +10 -0
  590. mindsdb/integrations/handlers/faunadb_handler/__about__.py +9 -0
  591. mindsdb/integrations/handlers/faunadb_handler/__init__.py +30 -0
  592. mindsdb/integrations/handlers/faunadb_handler/connection_args.py +39 -0
  593. mindsdb/integrations/handlers/faunadb_handler/faunadb_handler.py +267 -0
  594. mindsdb/integrations/handlers/faunadb_handler/icon.svg +3 -0
  595. mindsdb/integrations/handlers/faunadb_handler/requirements.txt +1 -0
  596. mindsdb/integrations/handlers/faunadb_handler/tests/__init__.py +0 -0
  597. mindsdb/integrations/handlers/faunadb_handler/tests/test_faunadb_handler.py +41 -0
  598. mindsdb/integrations/handlers/file_handler/__about__.py +9 -0
  599. mindsdb/integrations/handlers/file_handler/__init__.py +16 -0
  600. mindsdb/integrations/handlers/file_handler/file_handler.py +528 -0
  601. mindsdb/integrations/handlers/file_handler/icon.svg +8 -0
  602. mindsdb/integrations/handlers/file_handler/requirements.txt +4 -0
  603. mindsdb/integrations/handlers/file_handler/tests/__init__.py +0 -0
  604. mindsdb/integrations/handlers/file_handler/tests/data/test.txt +10 -0
  605. mindsdb/integrations/handlers/file_handler/tests/test_file_handler.py +458 -0
  606. mindsdb/integrations/handlers/financial_modeling_prep_handler/__about__.py +9 -0
  607. mindsdb/integrations/handlers/financial_modeling_prep_handler/__init__.py +19 -0
  608. mindsdb/integrations/handlers/financial_modeling_prep_handler/financial_modeling_handler.py +56 -0
  609. mindsdb/integrations/handlers/financial_modeling_prep_handler/financial_modeling_tables.py +89 -0
  610. mindsdb/integrations/handlers/financial_modeling_prep_handler/icon.svg +67 -0
  611. mindsdb/integrations/handlers/firebird_handler/__about__.py +9 -0
  612. mindsdb/integrations/handlers/firebird_handler/__init__.py +20 -0
  613. mindsdb/integrations/handlers/firebird_handler/connection_args.py +34 -0
  614. mindsdb/integrations/handlers/firebird_handler/firebird_handler.py +240 -0
  615. mindsdb/integrations/handlers/firebird_handler/icon.svg +16 -0
  616. mindsdb/integrations/handlers/firebird_handler/requirements.txt +2 -0
  617. mindsdb/integrations/handlers/firebird_handler/tests/__init__.py +0 -0
  618. mindsdb/integrations/handlers/firebird_handler/tests/test_firebird_handler.py +37 -0
  619. mindsdb/integrations/handlers/flaml_handler/__about__.py +9 -0
  620. mindsdb/integrations/handlers/flaml_handler/__init__.py +19 -0
  621. mindsdb/integrations/handlers/flaml_handler/flaml_handler.py +47 -0
  622. mindsdb/integrations/handlers/flaml_handler/icon.svg +5 -0
  623. mindsdb/integrations/handlers/flaml_handler/requirements.txt +2 -0
  624. mindsdb/integrations/handlers/frappe_handler/__about__.py +9 -0
  625. mindsdb/integrations/handlers/frappe_handler/__init__.py +19 -0
  626. mindsdb/integrations/handlers/frappe_handler/frappe_client.py +111 -0
  627. mindsdb/integrations/handlers/frappe_handler/frappe_handler.py +209 -0
  628. mindsdb/integrations/handlers/frappe_handler/frappe_tables.py +82 -0
  629. mindsdb/integrations/handlers/frappe_handler/icon.svg +11 -0
  630. mindsdb/integrations/handlers/frappe_handler/requirements.txt +0 -0
  631. mindsdb/integrations/handlers/gcs_handler/__about__.py +9 -0
  632. mindsdb/integrations/handlers/gcs_handler/__init__.py +20 -0
  633. mindsdb/integrations/handlers/gcs_handler/connection_args.py +29 -0
  634. mindsdb/integrations/handlers/gcs_handler/gcs_handler.py +375 -0
  635. mindsdb/integrations/handlers/gcs_handler/gcs_tables.py +50 -0
  636. mindsdb/integrations/handlers/gcs_handler/icon.svg +1 -0
  637. mindsdb/integrations/handlers/gcs_handler/requirements.txt +4 -0
  638. mindsdb/integrations/handlers/github_handler/__about__.py +9 -0
  639. mindsdb/integrations/handlers/github_handler/__init__.py +28 -0
  640. mindsdb/integrations/handlers/github_handler/connection_args.py +32 -0
  641. mindsdb/integrations/handlers/github_handler/github_handler.py +124 -0
  642. mindsdb/integrations/handlers/github_handler/github_tables.py +965 -0
  643. mindsdb/integrations/handlers/github_handler/icon.svg +10 -0
  644. mindsdb/integrations/handlers/github_handler/requirements.txt +1 -0
  645. mindsdb/integrations/handlers/gitlab_handler/__about__.py +9 -0
  646. mindsdb/integrations/handlers/gitlab_handler/__init__.py +19 -0
  647. mindsdb/integrations/handlers/gitlab_handler/gitlab_handler.py +84 -0
  648. mindsdb/integrations/handlers/gitlab_handler/gitlab_tables.py +393 -0
  649. mindsdb/integrations/handlers/gitlab_handler/icon.svg +6 -0
  650. mindsdb/integrations/handlers/gitlab_handler/requirements.txt +1 -0
  651. mindsdb/integrations/handlers/gmail_handler/__about__.py +9 -0
  652. mindsdb/integrations/handlers/gmail_handler/__init__.py +20 -0
  653. mindsdb/integrations/handlers/gmail_handler/connection_args.py +27 -0
  654. mindsdb/integrations/handlers/gmail_handler/gmail_handler.py +566 -0
  655. mindsdb/integrations/handlers/gmail_handler/icon.svg +14 -0
  656. mindsdb/integrations/handlers/gmail_handler/requirements.txt +2 -0
  657. mindsdb/integrations/handlers/gmail_handler/tests/__init__.py +0 -0
  658. mindsdb/integrations/handlers/gmail_handler/tests/test_gmail_handler.py +50 -0
  659. mindsdb/integrations/handlers/gmail_handler/utils.py +45 -0
  660. mindsdb/integrations/handlers/google_analytics_handler/__about__.py +9 -0
  661. mindsdb/integrations/handlers/google_analytics_handler/__init__.py +18 -0
  662. mindsdb/integrations/handlers/google_analytics_handler/google_analytics_handler.py +129 -0
  663. mindsdb/integrations/handlers/google_analytics_handler/google_analytics_tables.py +283 -0
  664. mindsdb/integrations/handlers/google_analytics_handler/icon.svg +4 -0
  665. mindsdb/integrations/handlers/google_analytics_handler/requirements.txt +2 -0
  666. mindsdb/integrations/handlers/google_analytics_handler/tests/__init__.py +0 -0
  667. mindsdb/integrations/handlers/google_analytics_handler/tests/test_google_analytics_handler.py +48 -0
  668. mindsdb/integrations/handlers/google_books_handler/__about__.py +9 -0
  669. mindsdb/integrations/handlers/google_books_handler/__init__.py +20 -0
  670. mindsdb/integrations/handlers/google_books_handler/google_books_handler.py +184 -0
  671. mindsdb/integrations/handlers/google_books_handler/google_books_tables.py +185 -0
  672. mindsdb/integrations/handlers/google_books_handler/icon.svg +5 -0
  673. mindsdb/integrations/handlers/google_books_handler/requirements.txt +2 -0
  674. mindsdb/integrations/handlers/google_books_handler/tests/__init__.py +0 -0
  675. mindsdb/integrations/handlers/google_books_handler/tests/test_google_books_handler.py +41 -0
  676. mindsdb/integrations/handlers/google_calendar_handler/__about__.py +9 -0
  677. mindsdb/integrations/handlers/google_calendar_handler/__init__.py +21 -0
  678. mindsdb/integrations/handlers/google_calendar_handler/connection_args.py +12 -0
  679. mindsdb/integrations/handlers/google_calendar_handler/google_calendar_handler.py +292 -0
  680. mindsdb/integrations/handlers/google_calendar_handler/google_calendar_tables.py +228 -0
  681. mindsdb/integrations/handlers/google_calendar_handler/icon.svg +10 -0
  682. mindsdb/integrations/handlers/google_calendar_handler/requirements.txt +3 -0
  683. mindsdb/integrations/handlers/google_calendar_handler/tests/__init__.py +0 -0
  684. mindsdb/integrations/handlers/google_calendar_handler/tests/test_google_calendar_handler.py +56 -0
  685. mindsdb/integrations/handlers/google_content_shopping_handler/__about__.py +9 -0
  686. mindsdb/integrations/handlers/google_content_shopping_handler/__init__.py +20 -0
  687. mindsdb/integrations/handlers/google_content_shopping_handler/connection_args.py +20 -0
  688. mindsdb/integrations/handlers/google_content_shopping_handler/google_content_shopping_handler.py +396 -0
  689. mindsdb/integrations/handlers/google_content_shopping_handler/google_content_shopping_tables.py +435 -0
  690. mindsdb/integrations/handlers/google_content_shopping_handler/icon.svg +15 -0
  691. mindsdb/integrations/handlers/google_content_shopping_handler/requirements.txt +2 -0
  692. mindsdb/integrations/handlers/google_content_shopping_handler/tests/__init__.py +0 -0
  693. mindsdb/integrations/handlers/google_content_shopping_handler/tests/test_google_content_shopping_handler.py +64 -0
  694. mindsdb/integrations/handlers/google_fit_handler/__about__.py +9 -0
  695. mindsdb/integrations/handlers/google_fit_handler/__init__.py +19 -0
  696. mindsdb/integrations/handlers/google_fit_handler/google_fit_handler.py +155 -0
  697. mindsdb/integrations/handlers/google_fit_handler/google_fit_tables.py +69 -0
  698. mindsdb/integrations/handlers/google_fit_handler/icon.svg +13 -0
  699. mindsdb/integrations/handlers/google_fit_handler/requirements.txt +4 -0
  700. mindsdb/integrations/handlers/google_gemini_handler/__about__.py +9 -0
  701. mindsdb/integrations/handlers/google_gemini_handler/__init__.py +30 -0
  702. mindsdb/integrations/handlers/google_gemini_handler/google_gemini_handler.py +370 -0
  703. mindsdb/integrations/handlers/google_gemini_handler/icon.svg +3 -0
  704. mindsdb/integrations/handlers/google_gemini_handler/requirements.txt +2 -0
  705. mindsdb/integrations/handlers/google_search_handler/__about__.py +9 -0
  706. mindsdb/integrations/handlers/google_search_handler/__init__.py +20 -0
  707. mindsdb/integrations/handlers/google_search_handler/connection_args.py +15 -0
  708. mindsdb/integrations/handlers/google_search_handler/google_search_handler.py +205 -0
  709. mindsdb/integrations/handlers/google_search_handler/google_search_tables.py +220 -0
  710. mindsdb/integrations/handlers/google_search_handler/icon.svg +19 -0
  711. mindsdb/integrations/handlers/google_search_handler/requirements.txt +2 -0
  712. mindsdb/integrations/handlers/google_search_handler/tests/__init__.py +0 -0
  713. mindsdb/integrations/handlers/google_search_handler/tests/test_google_search_handler.py +55 -0
  714. mindsdb/integrations/handlers/greptimedb_handler/__about__.py +9 -0
  715. mindsdb/integrations/handlers/greptimedb_handler/__init__.py +19 -0
  716. mindsdb/integrations/handlers/greptimedb_handler/greptimedb_handler.py +21 -0
  717. mindsdb/integrations/handlers/greptimedb_handler/icon.svg +3 -0
  718. mindsdb/integrations/handlers/greptimedb_handler/requirements.txt +1 -0
  719. mindsdb/integrations/handlers/groq_handler/__about__.py +9 -0
  720. mindsdb/integrations/handlers/groq_handler/__init__.py +23 -0
  721. mindsdb/integrations/handlers/groq_handler/groq_handler.py +136 -0
  722. mindsdb/integrations/handlers/groq_handler/icon.svg +30 -0
  723. mindsdb/integrations/handlers/groq_handler/requirements.txt +2 -0
  724. mindsdb/integrations/handlers/groq_handler/settings.py +31 -0
  725. mindsdb/integrations/handlers/hackernews_handler/__about__.py +9 -0
  726. mindsdb/integrations/handlers/hackernews_handler/__init__.py +21 -0
  727. mindsdb/integrations/handlers/hackernews_handler/hn_handler.py +102 -0
  728. mindsdb/integrations/handlers/hackernews_handler/hn_table.py +152 -0
  729. mindsdb/integrations/handlers/hackernews_handler/icon.svg +11 -0
  730. mindsdb/integrations/handlers/hana_handler/__about__.py +9 -0
  731. mindsdb/integrations/handlers/hana_handler/__init__.py +20 -0
  732. mindsdb/integrations/handlers/hana_handler/connection_args.py +57 -0
  733. mindsdb/integrations/handlers/hana_handler/hana_handler.py +259 -0
  734. mindsdb/integrations/handlers/hana_handler/icon.svg +13 -0
  735. mindsdb/integrations/handlers/hana_handler/requirements.txt +2 -0
  736. mindsdb/integrations/handlers/hive_handler/__about__.py +9 -0
  737. mindsdb/integrations/handlers/hive_handler/__init__.py +20 -0
  738. mindsdb/integrations/handlers/hive_handler/connection_args.py +53 -0
  739. mindsdb/integrations/handlers/hive_handler/hive_handler.py +224 -0
  740. mindsdb/integrations/handlers/hive_handler/icon.svg +41 -0
  741. mindsdb/integrations/handlers/hive_handler/requirements.txt +3 -0
  742. mindsdb/integrations/handlers/hive_handler/tests/__init__.py +0 -0
  743. mindsdb/integrations/handlers/hive_handler/tests/test_hive_handler.py +50 -0
  744. mindsdb/integrations/handlers/hsqldb_handler/__about__.py +9 -0
  745. mindsdb/integrations/handlers/hsqldb_handler/__init__.py +20 -0
  746. mindsdb/integrations/handlers/hsqldb_handler/connection_args.py +39 -0
  747. mindsdb/integrations/handlers/hsqldb_handler/hsqldb_handler.py +197 -0
  748. mindsdb/integrations/handlers/hsqldb_handler/icon.png +0 -0
  749. mindsdb/integrations/handlers/hsqldb_handler/requirements.txt +1 -0
  750. mindsdb/integrations/handlers/hubspot_handler/__about__.py +9 -0
  751. mindsdb/integrations/handlers/hubspot_handler/__init__.py +27 -0
  752. mindsdb/integrations/handlers/hubspot_handler/hubspot_handler.py +96 -0
  753. mindsdb/integrations/handlers/hubspot_handler/hubspot_tables.py +589 -0
  754. mindsdb/integrations/handlers/hubspot_handler/icon.svg +3 -0
  755. mindsdb/integrations/handlers/hubspot_handler/requirements.txt +1 -0
  756. mindsdb/integrations/handlers/huggingface_api_handler/__about__.py +9 -0
  757. mindsdb/integrations/handlers/huggingface_api_handler/__init__.py +19 -0
  758. mindsdb/integrations/handlers/huggingface_api_handler/exceptions.py +6 -0
  759. mindsdb/integrations/handlers/huggingface_api_handler/huggingface_api_handler.py +250 -0
  760. mindsdb/integrations/handlers/huggingface_api_handler/icon.svg +24 -0
  761. mindsdb/integrations/handlers/huggingface_api_handler/requirements.txt +2 -0
  762. mindsdb/integrations/handlers/huggingface_api_handler/tests/__init__.py +0 -0
  763. mindsdb/integrations/handlers/huggingface_api_handler/tests/test_huggingface_api_handler.py +9 -0
  764. mindsdb/integrations/handlers/huggingface_handler/__about__.py +9 -0
  765. mindsdb/integrations/handlers/huggingface_handler/__init__.py +20 -0
  766. mindsdb/integrations/handlers/huggingface_handler/finetune.py +223 -0
  767. mindsdb/integrations/handlers/huggingface_handler/huggingface_handler.py +383 -0
  768. mindsdb/integrations/handlers/huggingface_handler/icon.svg +24 -0
  769. mindsdb/integrations/handlers/huggingface_handler/requirements.txt +5 -0
  770. mindsdb/integrations/handlers/huggingface_handler/requirements_cpu.txt +6 -0
  771. mindsdb/integrations/handlers/huggingface_handler/settings.py +27 -0
  772. mindsdb/integrations/handlers/ibm_cos_handler/__about__.py +9 -0
  773. mindsdb/integrations/handlers/ibm_cos_handler/__init__.py +30 -0
  774. mindsdb/integrations/handlers/ibm_cos_handler/connection_args.py +38 -0
  775. mindsdb/integrations/handlers/ibm_cos_handler/ibm_cos_handler.py +338 -0
  776. mindsdb/integrations/handlers/ibm_cos_handler/icon.svg +54 -0
  777. mindsdb/integrations/handlers/ibm_cos_handler/requirements.txt +1 -0
  778. mindsdb/integrations/handlers/ibm_cos_handler/tests/__init__.py +0 -0
  779. mindsdb/integrations/handlers/ibm_cos_handler/tests/test_ibm_cos_handler.py +23 -0
  780. mindsdb/integrations/handlers/ignite_handler/__about__.py +9 -0
  781. mindsdb/integrations/handlers/ignite_handler/__init__.py +20 -0
  782. mindsdb/integrations/handlers/ignite_handler/connection_args.py +46 -0
  783. mindsdb/integrations/handlers/ignite_handler/icon.svg +5 -0
  784. mindsdb/integrations/handlers/ignite_handler/ignite_handler.py +207 -0
  785. mindsdb/integrations/handlers/ignite_handler/requirements.txt +1 -0
  786. mindsdb/integrations/handlers/ignite_handler/tests/__init__.py +0 -0
  787. mindsdb/integrations/handlers/ignite_handler/tests/test_ignite_handler.py +33 -0
  788. mindsdb/integrations/handlers/impala_handler/__about__.py +9 -0
  789. mindsdb/integrations/handlers/impala_handler/__init__.py +20 -0
  790. mindsdb/integrations/handlers/impala_handler/connection_args.py +37 -0
  791. mindsdb/integrations/handlers/impala_handler/icon.svg +13 -0
  792. mindsdb/integrations/handlers/impala_handler/impala_handler.py +156 -0
  793. mindsdb/integrations/handlers/impala_handler/requirements.txt +1 -0
  794. mindsdb/integrations/handlers/impala_handler/tests/__init__.py +0 -0
  795. mindsdb/integrations/handlers/impala_handler/tests/test_impala_handler.py +50 -0
  796. mindsdb/integrations/handlers/influxdb_handler/__about__.py +9 -0
  797. mindsdb/integrations/handlers/influxdb_handler/__init__.py +26 -0
  798. mindsdb/integrations/handlers/influxdb_handler/icon.svg +14 -0
  799. mindsdb/integrations/handlers/influxdb_handler/influxdb_handler.py +105 -0
  800. mindsdb/integrations/handlers/influxdb_handler/influxdb_tables.py +81 -0
  801. mindsdb/integrations/handlers/influxdb_handler/requirements.txt +1 -0
  802. mindsdb/integrations/handlers/informix_handler/__about__.py +9 -0
  803. mindsdb/integrations/handlers/informix_handler/__init__.py +20 -0
  804. mindsdb/integrations/handlers/informix_handler/icon.svg +5 -0
  805. mindsdb/integrations/handlers/informix_handler/informix_handler.py +318 -0
  806. mindsdb/integrations/handlers/informix_handler/requirements.txt +1 -0
  807. mindsdb/integrations/handlers/informix_handler/tests/__init__.py +0 -0
  808. mindsdb/integrations/handlers/informix_handler/tests/test_informix_handler.py +52 -0
  809. mindsdb/integrations/handlers/ingres_handler/__about__.py +10 -0
  810. mindsdb/integrations/handlers/ingres_handler/__init__.py +20 -0
  811. mindsdb/integrations/handlers/ingres_handler/connection_args.py +36 -0
  812. mindsdb/integrations/handlers/ingres_handler/icon.svg +6 -0
  813. mindsdb/integrations/handlers/ingres_handler/ingres_handler.py +210 -0
  814. mindsdb/integrations/handlers/ingres_handler/requirements.txt +2 -0
  815. mindsdb/integrations/handlers/ingres_handler/tests/__init__.py +0 -0
  816. mindsdb/integrations/handlers/ingres_handler/tests/test_ingres_handler.py +53 -0
  817. mindsdb/integrations/handlers/instatus_handler/__about__.py +9 -0
  818. mindsdb/integrations/handlers/instatus_handler/__init__.py +28 -0
  819. mindsdb/integrations/handlers/instatus_handler/icon.svg +5 -0
  820. mindsdb/integrations/handlers/instatus_handler/instatus_handler.py +127 -0
  821. mindsdb/integrations/handlers/instatus_handler/instatus_tables.py +393 -0
  822. mindsdb/integrations/handlers/intercom_handler/__about__.py +9 -0
  823. mindsdb/integrations/handlers/intercom_handler/__init__.py +28 -0
  824. mindsdb/integrations/handlers/intercom_handler/icon.svg +3 -0
  825. mindsdb/integrations/handlers/intercom_handler/intercom_handler.py +117 -0
  826. mindsdb/integrations/handlers/intercom_handler/intercom_tables.py +152 -0
  827. mindsdb/integrations/handlers/jira_handler/__about__.py +9 -0
  828. mindsdb/integrations/handlers/jira_handler/__init__.py +26 -0
  829. mindsdb/integrations/handlers/jira_handler/icon.svg +15 -0
  830. mindsdb/integrations/handlers/jira_handler/jira_handler.py +119 -0
  831. mindsdb/integrations/handlers/jira_handler/jira_table.py +151 -0
  832. mindsdb/integrations/handlers/jira_handler/requirements.txt +1 -0
  833. mindsdb/integrations/handlers/kinetica_handler/__about__.py +9 -0
  834. mindsdb/integrations/handlers/kinetica_handler/__init__.py +22 -0
  835. mindsdb/integrations/handlers/kinetica_handler/connection_args.py +54 -0
  836. mindsdb/integrations/handlers/kinetica_handler/icon.svg +5 -0
  837. mindsdb/integrations/handlers/kinetica_handler/kinetica_handler.py +12 -0
  838. mindsdb/integrations/handlers/lancedb_handler/__about__.py +9 -0
  839. mindsdb/integrations/handlers/lancedb_handler/__init__.py +29 -0
  840. mindsdb/integrations/handlers/lancedb_handler/connection_args.py +35 -0
  841. mindsdb/integrations/handlers/lancedb_handler/icon.svg +8 -0
  842. mindsdb/integrations/handlers/lancedb_handler/lancedb_handler.py +329 -0
  843. mindsdb/integrations/handlers/lancedb_handler/requirements.txt +3 -0
  844. mindsdb/integrations/handlers/lancedb_handler/tests/__init__.py +0 -0
  845. mindsdb/integrations/handlers/lancedb_handler/tests/test_lancedb_handler.py +99 -0
  846. mindsdb/integrations/handlers/langchain_embedding_handler/__about__.py +9 -0
  847. mindsdb/integrations/handlers/langchain_embedding_handler/__init__.py +23 -0
  848. mindsdb/integrations/handlers/langchain_embedding_handler/icon.svg +14 -0
  849. mindsdb/integrations/handlers/langchain_embedding_handler/langchain_embedding_handler.py +221 -0
  850. mindsdb/integrations/handlers/langchain_embedding_handler/requirements.txt +2 -0
  851. mindsdb/integrations/handlers/langchain_embedding_handler/vllm_embeddings.py +111 -0
  852. mindsdb/integrations/handlers/langchain_handler/__about__.py +9 -0
  853. mindsdb/integrations/handlers/langchain_handler/__init__.py +19 -0
  854. mindsdb/integrations/handlers/langchain_handler/icon.svg +14 -0
  855. mindsdb/integrations/handlers/langchain_handler/langchain_handler.py +278 -0
  856. mindsdb/integrations/handlers/langchain_handler/requirements.txt +8 -0
  857. mindsdb/integrations/handlers/langchain_handler/tools.py +247 -0
  858. mindsdb/integrations/handlers/leonardoai_handler/__about__.py +9 -0
  859. mindsdb/integrations/handlers/leonardoai_handler/__init__.py +19 -0
  860. mindsdb/integrations/handlers/leonardoai_handler/icon.svg +306 -0
  861. mindsdb/integrations/handlers/leonardoai_handler/leonardo_ai_handler.py +225 -0
  862. mindsdb/integrations/handlers/leonardoai_handler/requirements.txt +0 -0
  863. mindsdb/integrations/handlers/libsql_handler/__about__.py +9 -0
  864. mindsdb/integrations/handlers/libsql_handler/__init__.py +28 -0
  865. mindsdb/integrations/handlers/libsql_handler/connection_args.py +22 -0
  866. mindsdb/integrations/handlers/libsql_handler/icon.svg +3 -0
  867. mindsdb/integrations/handlers/libsql_handler/libsql_handler.py +192 -0
  868. mindsdb/integrations/handlers/libsql_handler/requirements.txt +1 -0
  869. mindsdb/integrations/handlers/libsql_handler/tests/__init__.py +0 -0
  870. mindsdb/integrations/handlers/libsql_handler/tests/test_libsql_handler.py +45 -0
  871. mindsdb/integrations/handlers/lightdash_handler/__about__.py +9 -0
  872. mindsdb/integrations/handlers/lightdash_handler/__init__.py +27 -0
  873. mindsdb/integrations/handlers/lightdash_handler/api.py +513 -0
  874. mindsdb/integrations/handlers/lightdash_handler/icon.png +0 -0
  875. mindsdb/integrations/handlers/lightdash_handler/lightdash_handler.py +108 -0
  876. mindsdb/integrations/handlers/lightdash_handler/lightdash_tables.py +648 -0
  877. mindsdb/integrations/handlers/lightdash_handler/tests/__init__.py +0 -0
  878. mindsdb/integrations/handlers/lightfm_handler/__about__.py +9 -0
  879. mindsdb/integrations/handlers/lightfm_handler/__init__.py +21 -0
  880. mindsdb/integrations/handlers/lightfm_handler/helpers.py +175 -0
  881. mindsdb/integrations/handlers/lightfm_handler/icon.svg +14 -0
  882. mindsdb/integrations/handlers/lightfm_handler/lightfm_handler.py +198 -0
  883. mindsdb/integrations/handlers/lightfm_handler/requirements.txt +1 -0
  884. mindsdb/integrations/handlers/lightfm_handler/settings.py +7 -0
  885. mindsdb/integrations/handlers/lightwood_handler/__about__.py +9 -0
  886. mindsdb/integrations/handlers/lightwood_handler/__init__.py +19 -0
  887. mindsdb/integrations/handlers/lightwood_handler/functions.py +252 -0
  888. mindsdb/integrations/handlers/lightwood_handler/icon.svg +13 -0
  889. mindsdb/integrations/handlers/lightwood_handler/lightwood_handler.py +581 -0
  890. mindsdb/integrations/handlers/lightwood_handler/requirements.txt +4 -0
  891. mindsdb/integrations/handlers/lightwood_handler/tests/__init__.py +0 -0
  892. mindsdb/integrations/handlers/lightwood_handler/tests/test_lightwood_handler.py +258 -0
  893. mindsdb/integrations/handlers/lightwood_handler/utils.py +76 -0
  894. mindsdb/integrations/handlers/lindorm_handler/__about__.py +9 -0
  895. mindsdb/integrations/handlers/lindorm_handler/__init__.py +28 -0
  896. mindsdb/integrations/handlers/lindorm_handler/icon.svg +5 -0
  897. mindsdb/integrations/handlers/lindorm_handler/lindorm_handler.py +220 -0
  898. mindsdb/integrations/handlers/lindorm_handler/requirements.txt +2 -0
  899. mindsdb/integrations/handlers/lindorm_handler/tests/__init__.py +0 -0
  900. mindsdb/integrations/handlers/lindorm_handler/tests/test_lindorm_handler.py +33 -0
  901. mindsdb/integrations/handlers/litellm_handler/__about__.py +9 -0
  902. mindsdb/integrations/handlers/litellm_handler/__init__.py +30 -0
  903. mindsdb/integrations/handlers/litellm_handler/icon.png +0 -0
  904. mindsdb/integrations/handlers/litellm_handler/litellm_handler.py +141 -0
  905. mindsdb/integrations/handlers/litellm_handler/requirements.txt +2 -0
  906. mindsdb/integrations/handlers/litellm_handler/settings.py +39 -0
  907. mindsdb/integrations/handlers/llama_index_handler/__about__.py +9 -0
  908. mindsdb/integrations/handlers/llama_index_handler/__init__.py +19 -0
  909. mindsdb/integrations/handlers/llama_index_handler/icon.svg +9 -0
  910. mindsdb/integrations/handlers/llama_index_handler/llama_index_handler.py +201 -0
  911. mindsdb/integrations/handlers/llama_index_handler/requirements.txt +5 -0
  912. mindsdb/integrations/handlers/llama_index_handler/settings.py +65 -0
  913. mindsdb/integrations/handlers/ludwig_handler/__about__.py +9 -0
  914. mindsdb/integrations/handlers/ludwig_handler/__init__.py +19 -0
  915. mindsdb/integrations/handlers/ludwig_handler/functions.py +0 -0
  916. mindsdb/integrations/handlers/ludwig_handler/icon.svg +5 -0
  917. mindsdb/integrations/handlers/ludwig_handler/ludwig_handler.py +68 -0
  918. mindsdb/integrations/handlers/ludwig_handler/requirements.txt +3 -0
  919. mindsdb/integrations/handlers/ludwig_handler/utils.py +12 -0
  920. mindsdb/integrations/handlers/luma_handler/__about__.py +9 -0
  921. mindsdb/integrations/handlers/luma_handler/__init__.py +28 -0
  922. mindsdb/integrations/handlers/luma_handler/connection_args.py +18 -0
  923. mindsdb/integrations/handlers/luma_handler/icon.png +0 -0
  924. mindsdb/integrations/handlers/luma_handler/luma.py +47 -0
  925. mindsdb/integrations/handlers/luma_handler/luma_handler.py +77 -0
  926. mindsdb/integrations/handlers/luma_handler/luma_tables.py +164 -0
  927. mindsdb/integrations/handlers/luma_handler/requirements.txt +0 -0
  928. mindsdb/integrations/handlers/mariadb_handler/__about__.py +9 -0
  929. mindsdb/integrations/handlers/mariadb_handler/__init__.py +20 -0
  930. mindsdb/integrations/handlers/mariadb_handler/connection_args.py +76 -0
  931. mindsdb/integrations/handlers/mariadb_handler/icon.svg +3 -0
  932. mindsdb/integrations/handlers/mariadb_handler/mariadb_handler.py +12 -0
  933. mindsdb/integrations/handlers/mariadb_handler/requirements.txt +1 -0
  934. mindsdb/integrations/handlers/materialize_handler/__about__.py +9 -0
  935. mindsdb/integrations/handlers/materialize_handler/__init__.py +20 -0
  936. mindsdb/integrations/handlers/materialize_handler/icon.svg +7 -0
  937. mindsdb/integrations/handlers/materialize_handler/materialize_handler.py +43 -0
  938. mindsdb/integrations/handlers/materialize_handler/tests/__init__.py +0 -0
  939. mindsdb/integrations/handlers/materialize_handler/tests/test_materialize_handler.py +56 -0
  940. mindsdb/integrations/handlers/matrixone_handler/__about__.py +9 -0
  941. mindsdb/integrations/handlers/matrixone_handler/__init__.py +20 -0
  942. mindsdb/integrations/handlers/matrixone_handler/connection_args.py +52 -0
  943. mindsdb/integrations/handlers/matrixone_handler/icon.svg +9 -0
  944. mindsdb/integrations/handlers/matrixone_handler/matrixone_handler.py +168 -0
  945. mindsdb/integrations/handlers/matrixone_handler/requirements.txt +1 -0
  946. mindsdb/integrations/handlers/matrixone_handler/tests/__init__.py +0 -0
  947. mindsdb/integrations/handlers/matrixone_handler/tests/test_matrixone_handler.py +56 -0
  948. mindsdb/integrations/handlers/maxdb_handler/__about__.py +9 -0
  949. mindsdb/integrations/handlers/maxdb_handler/__init__.py +28 -0
  950. mindsdb/integrations/handlers/maxdb_handler/connection_args.py +42 -0
  951. mindsdb/integrations/handlers/maxdb_handler/icon.svg +13 -0
  952. mindsdb/integrations/handlers/maxdb_handler/maxdb_handler.py +185 -0
  953. mindsdb/integrations/handlers/maxdb_handler/requirements.txt +1 -0
  954. mindsdb/integrations/handlers/maxdb_handler/tests/__init__.py +0 -0
  955. mindsdb/integrations/handlers/maxdb_handler/tests/test_maxdb_handler.py +55 -0
  956. mindsdb/integrations/handlers/mediawiki_handler/__about__.py +9 -0
  957. mindsdb/integrations/handlers/mediawiki_handler/__init__.py +27 -0
  958. mindsdb/integrations/handlers/mediawiki_handler/icon.svg +153 -0
  959. mindsdb/integrations/handlers/mediawiki_handler/mediawiki_handler.py +87 -0
  960. mindsdb/integrations/handlers/mediawiki_handler/mediawiki_tables.py +98 -0
  961. mindsdb/integrations/handlers/mediawiki_handler/requirements.txt +1 -0
  962. mindsdb/integrations/handlers/mendeley_handler/__about__.py +9 -0
  963. mindsdb/integrations/handlers/mendeley_handler/__init__.py +19 -0
  964. mindsdb/integrations/handlers/mendeley_handler/icon.svg +14 -0
  965. mindsdb/integrations/handlers/mendeley_handler/mendeley_handler.py +225 -0
  966. mindsdb/integrations/handlers/mendeley_handler/mendeley_tables.py +134 -0
  967. mindsdb/integrations/handlers/mendeley_handler/requirements.txt +1 -0
  968. mindsdb/integrations/handlers/mendeley_handler/tests/__init__.py +0 -0
  969. mindsdb/integrations/handlers/mendeley_handler/tests/test_mendeley_handler.py +108 -0
  970. mindsdb/integrations/handlers/merlion_handler/__about__.py +9 -0
  971. mindsdb/integrations/handlers/merlion_handler/__init__.py +19 -0
  972. mindsdb/integrations/handlers/merlion_handler/adapters.py +182 -0
  973. mindsdb/integrations/handlers/merlion_handler/icon.svg +16 -0
  974. mindsdb/integrations/handlers/merlion_handler/merlion_handler.py +205 -0
  975. mindsdb/integrations/handlers/merlion_handler/requirements.txt +2 -0
  976. mindsdb/integrations/handlers/milvus_handler/__about__.py +9 -0
  977. mindsdb/integrations/handlers/milvus_handler/__init__.py +29 -0
  978. mindsdb/integrations/handlers/milvus_handler/connection_args.py +112 -0
  979. mindsdb/integrations/handlers/milvus_handler/icon.svg +5 -0
  980. mindsdb/integrations/handlers/milvus_handler/milvus_handler.py +332 -0
  981. mindsdb/integrations/handlers/milvus_handler/requirements.txt +1 -0
  982. mindsdb/integrations/handlers/milvus_handler/tests/__init__.py +0 -0
  983. mindsdb/integrations/handlers/minds_endpoint_handler/__about__.py +9 -0
  984. mindsdb/integrations/handlers/minds_endpoint_handler/__init__.py +23 -0
  985. mindsdb/integrations/handlers/minds_endpoint_handler/icon.svg +13 -0
  986. mindsdb/integrations/handlers/minds_endpoint_handler/minds_endpoint_handler.py +132 -0
  987. mindsdb/integrations/handlers/minds_endpoint_handler/requirements.txt +2 -0
  988. mindsdb/integrations/handlers/minds_endpoint_handler/settings.py +18 -0
  989. mindsdb/integrations/handlers/minds_endpoint_handler/tests/__init__.py +0 -0
  990. mindsdb/integrations/handlers/minds_endpoint_handler/tests/test_minds_endpoint_handler.py +160 -0
  991. mindsdb/integrations/handlers/mlflow_handler/__about__.py +9 -0
  992. mindsdb/integrations/handlers/mlflow_handler/__init__.py +18 -0
  993. mindsdb/integrations/handlers/mlflow_handler/icon.svg +4 -0
  994. mindsdb/integrations/handlers/mlflow_handler/mlflow_handler.py +83 -0
  995. mindsdb/integrations/handlers/mlflow_handler/requirements.txt +1 -0
  996. mindsdb/integrations/handlers/monetdb_handler/__about__.py +9 -0
  997. mindsdb/integrations/handlers/monetdb_handler/__init__.py +20 -0
  998. mindsdb/integrations/handlers/monetdb_handler/connection_args.py +44 -0
  999. mindsdb/integrations/handlers/monetdb_handler/icon.svg +4 -0
  1000. mindsdb/integrations/handlers/monetdb_handler/monetdb_handler.py +219 -0
  1001. mindsdb/integrations/handlers/monetdb_handler/requirements.txt +2 -0
  1002. mindsdb/integrations/handlers/monetdb_handler/tests/__init__.py +0 -0
  1003. mindsdb/integrations/handlers/monetdb_handler/tests/test_monetdb_handler.py +50 -0
  1004. mindsdb/integrations/handlers/monetdb_handler/utils/__init__.py +0 -0
  1005. mindsdb/integrations/handlers/monetdb_handler/utils/monet_get_id.py +50 -0
  1006. mindsdb/integrations/handlers/mongodb_handler/__about__.py +9 -0
  1007. mindsdb/integrations/handlers/mongodb_handler/__init__.py +21 -0
  1008. mindsdb/integrations/handlers/mongodb_handler/connection_args.py +46 -0
  1009. mindsdb/integrations/handlers/mongodb_handler/icon.svg +3 -0
  1010. mindsdb/integrations/handlers/mongodb_handler/mongodb_handler.py +372 -0
  1011. mindsdb/integrations/handlers/mongodb_handler/tests/__init__.py +0 -0
  1012. mindsdb/integrations/handlers/mongodb_handler/tests/test_mongodb_handler.py +125 -0
  1013. mindsdb/integrations/handlers/mongodb_handler/utils/__init__.py +0 -0
  1014. mindsdb/integrations/handlers/mongodb_handler/utils/mongodb_render.py +286 -0
  1015. mindsdb/integrations/handlers/monkeylearn_handler/__about__.py +9 -0
  1016. mindsdb/integrations/handlers/monkeylearn_handler/__init__.py +19 -0
  1017. mindsdb/integrations/handlers/monkeylearn_handler/icon.png +0 -0
  1018. mindsdb/integrations/handlers/monkeylearn_handler/monkeylearn_handler.py +81 -0
  1019. mindsdb/integrations/handlers/monkeylearn_handler/requirements.txt +1 -0
  1020. mindsdb/integrations/handlers/ms_one_drive_handler/__about__.py +9 -0
  1021. mindsdb/integrations/handlers/ms_one_drive_handler/__init__.py +27 -0
  1022. mindsdb/integrations/handlers/ms_one_drive_handler/icon.svg +31 -0
  1023. mindsdb/integrations/handlers/ms_one_drive_handler/ms_graph_api_one_drive_client.py +102 -0
  1024. mindsdb/integrations/handlers/ms_one_drive_handler/ms_one_drive_handler.py +252 -0
  1025. mindsdb/integrations/handlers/ms_one_drive_handler/ms_one_drive_tables.py +100 -0
  1026. mindsdb/integrations/handlers/ms_teams_handler/__about__.py +9 -0
  1027. mindsdb/integrations/handlers/ms_teams_handler/__init__.py +27 -0
  1028. mindsdb/integrations/handlers/ms_teams_handler/icon.svg +23 -0
  1029. mindsdb/integrations/handlers/ms_teams_handler/ms_teams_handler.py +193 -0
  1030. mindsdb/integrations/handlers/ms_teams_handler/requirements.txt +2 -0
  1031. mindsdb/integrations/handlers/mssql_handler/__about__.py +9 -0
  1032. mindsdb/integrations/handlers/mssql_handler/__init__.py +21 -0
  1033. mindsdb/integrations/handlers/mssql_handler/connection_args.py +52 -0
  1034. mindsdb/integrations/handlers/mssql_handler/icon.svg +21 -0
  1035. mindsdb/integrations/handlers/mssql_handler/mssql_handler.py +218 -0
  1036. mindsdb/integrations/handlers/mssql_handler/requirements.txt +1 -0
  1037. mindsdb/integrations/handlers/mssql_handler/tests/__init__.py +0 -0
  1038. mindsdb/integrations/handlers/mssql_handler/tests/test_mssql_handler.py +169 -0
  1039. mindsdb/integrations/handlers/mysql_handler/__about__.py +9 -0
  1040. mindsdb/integrations/handlers/mysql_handler/__init__.py +20 -0
  1041. mindsdb/integrations/handlers/mysql_handler/connection_args.py +76 -0
  1042. mindsdb/integrations/handlers/mysql_handler/icon.svg +4 -0
  1043. mindsdb/integrations/handlers/mysql_handler/mysql_handler.py +214 -0
  1044. mindsdb/integrations/handlers/mysql_handler/requirements.txt +1 -0
  1045. mindsdb/integrations/handlers/mysql_handler/settings.py +46 -0
  1046. mindsdb/integrations/handlers/neuralforecast_handler/__about__.py +9 -0
  1047. mindsdb/integrations/handlers/neuralforecast_handler/__init__.py +19 -0
  1048. mindsdb/integrations/handlers/neuralforecast_handler/icon.svg +5 -0
  1049. mindsdb/integrations/handlers/neuralforecast_handler/neuralforecast_handler.py +135 -0
  1050. mindsdb/integrations/handlers/neuralforecast_handler/requirements.txt +2 -0
  1051. mindsdb/integrations/handlers/neuralforecast_handler/requirements_extra.txt +2 -0
  1052. mindsdb/integrations/handlers/newsapi_handler/__about__.py +9 -0
  1053. mindsdb/integrations/handlers/newsapi_handler/__init__.py +29 -0
  1054. mindsdb/integrations/handlers/newsapi_handler/connection_args.py +14 -0
  1055. mindsdb/integrations/handlers/newsapi_handler/icon.png +0 -0
  1056. mindsdb/integrations/handlers/newsapi_handler/newsapi_handler.py +209 -0
  1057. mindsdb/integrations/handlers/newsapi_handler/requirements.txt +1 -0
  1058. mindsdb/integrations/handlers/newsapi_handler/tests/__init__.py +0 -0
  1059. mindsdb/integrations/handlers/newsapi_handler/tests/test_newsapi_handler.py +90 -0
  1060. mindsdb/integrations/handlers/notion_handler/__about__.py +9 -0
  1061. mindsdb/integrations/handlers/notion_handler/__init__.py +30 -0
  1062. mindsdb/integrations/handlers/notion_handler/icon.svg +11 -0
  1063. mindsdb/integrations/handlers/notion_handler/notion_handler.py +238 -0
  1064. mindsdb/integrations/handlers/notion_handler/notion_table.py +422 -0
  1065. mindsdb/integrations/handlers/notion_handler/requirements.txt +1 -0
  1066. mindsdb/integrations/handlers/notion_handler/tests/__init__.py +0 -0
  1067. mindsdb/integrations/handlers/notion_handler/tests/test_notion_handler.py +62 -0
  1068. mindsdb/integrations/handlers/npm_handler/__about__.py +9 -0
  1069. mindsdb/integrations/handlers/npm_handler/__init__.py +27 -0
  1070. mindsdb/integrations/handlers/npm_handler/api.py +26 -0
  1071. mindsdb/integrations/handlers/npm_handler/icon.svg +11 -0
  1072. mindsdb/integrations/handlers/npm_handler/npm_handler.py +53 -0
  1073. mindsdb/integrations/handlers/npm_handler/npm_tables.py +242 -0
  1074. mindsdb/integrations/handlers/npm_handler/tests/__init__.py +0 -0
  1075. mindsdb/integrations/handlers/nuo_jdbc_handler/__about__.py +9 -0
  1076. mindsdb/integrations/handlers/nuo_jdbc_handler/__init__.py +21 -0
  1077. mindsdb/integrations/handlers/nuo_jdbc_handler/connection_args.py +65 -0
  1078. mindsdb/integrations/handlers/nuo_jdbc_handler/icon.svg +3 -0
  1079. mindsdb/integrations/handlers/nuo_jdbc_handler/nuo_jdbc_handler.py +228 -0
  1080. mindsdb/integrations/handlers/nuo_jdbc_handler/requirements.txt +1 -0
  1081. mindsdb/integrations/handlers/nuo_jdbc_handler/tests/__init__.py +0 -0
  1082. mindsdb/integrations/handlers/nuo_jdbc_handler/tests/test_nuo_handler.py +50 -0
  1083. mindsdb/integrations/handlers/oceanbase_handler/__about__.py +9 -0
  1084. mindsdb/integrations/handlers/oceanbase_handler/__init__.py +20 -0
  1085. mindsdb/integrations/handlers/oceanbase_handler/icon.svg +4 -0
  1086. mindsdb/integrations/handlers/oceanbase_handler/oceanbase_handler.py +48 -0
  1087. mindsdb/integrations/handlers/oceanbase_handler/requirements.txt +1 -0
  1088. mindsdb/integrations/handlers/oceanbase_handler/tests/__init__.py +0 -0
  1089. mindsdb/integrations/handlers/oceanbase_handler/tests/test_oceanbase_handler.py +56 -0
  1090. mindsdb/integrations/handlers/oilpriceapi_handler/__about__.py +9 -0
  1091. mindsdb/integrations/handlers/oilpriceapi_handler/__init__.py +28 -0
  1092. mindsdb/integrations/handlers/oilpriceapi_handler/connection_args.py +18 -0
  1093. mindsdb/integrations/handlers/oilpriceapi_handler/icon.svg +7 -0
  1094. mindsdb/integrations/handlers/oilpriceapi_handler/oilpriceapi.py +45 -0
  1095. mindsdb/integrations/handlers/oilpriceapi_handler/oilpriceapi_handler.py +100 -0
  1096. mindsdb/integrations/handlers/oilpriceapi_handler/oilpriceapi_tables.py +208 -0
  1097. mindsdb/integrations/handlers/ollama_handler/__about__.py +9 -0
  1098. mindsdb/integrations/handlers/ollama_handler/__init__.py +19 -0
  1099. mindsdb/integrations/handlers/ollama_handler/icon.png +0 -0
  1100. mindsdb/integrations/handlers/ollama_handler/ollama_handler.py +171 -0
  1101. mindsdb/integrations/handlers/openai_handler/__about__.py +9 -0
  1102. mindsdb/integrations/handlers/openai_handler/__init__.py +22 -0
  1103. mindsdb/integrations/handlers/openai_handler/constants.py +36 -0
  1104. mindsdb/integrations/handlers/openai_handler/creation_args.py +14 -0
  1105. mindsdb/integrations/handlers/openai_handler/helpers.py +197 -0
  1106. mindsdb/integrations/handlers/openai_handler/icon.svg +10 -0
  1107. mindsdb/integrations/handlers/openai_handler/model_using_args.py +5 -0
  1108. mindsdb/integrations/handlers/openai_handler/openai_handler.py +1188 -0
  1109. mindsdb/integrations/handlers/openai_handler/requirements.txt +2 -0
  1110. mindsdb/integrations/handlers/openai_handler/tests/__init__.py +0 -0
  1111. mindsdb/integrations/handlers/openai_handler/tests/test_openai_handler.py +509 -0
  1112. mindsdb/integrations/handlers/openbb_handler/__about__.py +9 -0
  1113. mindsdb/integrations/handlers/openbb_handler/__init__.py +27 -0
  1114. mindsdb/integrations/handlers/openbb_handler/icon.svg +3 -0
  1115. mindsdb/integrations/handlers/openbb_handler/openbb_handler.py +119 -0
  1116. mindsdb/integrations/handlers/openbb_handler/openbb_tables.py +337 -0
  1117. mindsdb/integrations/handlers/openbb_handler/requirements.txt +2 -0
  1118. mindsdb/integrations/handlers/opengauss_handler/__about__.py +9 -0
  1119. mindsdb/integrations/handlers/opengauss_handler/__init__.py +21 -0
  1120. mindsdb/integrations/handlers/opengauss_handler/connection_args.py +36 -0
  1121. mindsdb/integrations/handlers/opengauss_handler/icon.svg +6 -0
  1122. mindsdb/integrations/handlers/opengauss_handler/opengauss_handler.py +11 -0
  1123. mindsdb/integrations/handlers/opengauss_handler/tests/__init__.py +0 -0
  1124. mindsdb/integrations/handlers/opengauss_handler/tests/test_opengauss_handler.py +45 -0
  1125. mindsdb/integrations/handlers/openstreetmap_handler/__about__.py +9 -0
  1126. mindsdb/integrations/handlers/openstreetmap_handler/__init__.py +27 -0
  1127. mindsdb/integrations/handlers/openstreetmap_handler/icon.svg +10 -0
  1128. mindsdb/integrations/handlers/openstreetmap_handler/openstreetmap_handler.py +90 -0
  1129. mindsdb/integrations/handlers/openstreetmap_handler/openstreetmap_tables.py +243 -0
  1130. mindsdb/integrations/handlers/openstreetmap_handler/requirements.txt +1 -0
  1131. mindsdb/integrations/handlers/openstreetmap_handler/tests/__init__.py +0 -0
  1132. mindsdb/integrations/handlers/openstreetmap_handler/tests/test_openstreetmap_handler.py +37 -0
  1133. mindsdb/integrations/handlers/oracle_handler/__about__.py +9 -0
  1134. mindsdb/integrations/handlers/oracle_handler/__init__.py +28 -0
  1135. mindsdb/integrations/handlers/oracle_handler/connection_args.py +70 -0
  1136. mindsdb/integrations/handlers/oracle_handler/icon.svg +3 -0
  1137. mindsdb/integrations/handlers/oracle_handler/oracle_handler.py +246 -0
  1138. mindsdb/integrations/handlers/oracle_handler/requirements.txt +1 -0
  1139. mindsdb/integrations/handlers/oracle_handler/tests/__init__.py +0 -0
  1140. mindsdb/integrations/handlers/oracle_handler/tests/test_oracle_handler.py +32 -0
  1141. mindsdb/integrations/handlers/orioledb_handler/__about__.py +9 -0
  1142. mindsdb/integrations/handlers/orioledb_handler/__init__.py +21 -0
  1143. mindsdb/integrations/handlers/orioledb_handler/connection_args.py +36 -0
  1144. mindsdb/integrations/handlers/orioledb_handler/icon.svg +6 -0
  1145. mindsdb/integrations/handlers/orioledb_handler/orioledb_handler.py +11 -0
  1146. mindsdb/integrations/handlers/orioledb_handler/tests/__init__.py +0 -0
  1147. mindsdb/integrations/handlers/orioledb_handler/tests/test_orioledb_handler.py +56 -0
  1148. mindsdb/integrations/handlers/palm_handler/__about__.py +9 -0
  1149. mindsdb/integrations/handlers/palm_handler/__init__.py +19 -0
  1150. mindsdb/integrations/handlers/palm_handler/icon.svg +9 -0
  1151. mindsdb/integrations/handlers/palm_handler/palm_handler.py +448 -0
  1152. mindsdb/integrations/handlers/palm_handler/requirements.txt +1 -0
  1153. mindsdb/integrations/handlers/paypal_handler/__about__.py +9 -0
  1154. mindsdb/integrations/handlers/paypal_handler/__init__.py +27 -0
  1155. mindsdb/integrations/handlers/paypal_handler/icon.svg +5 -0
  1156. mindsdb/integrations/handlers/paypal_handler/paypal_handler.py +145 -0
  1157. mindsdb/integrations/handlers/paypal_handler/paypal_tables.py +283 -0
  1158. mindsdb/integrations/handlers/paypal_handler/requirements.txt +1 -0
  1159. mindsdb/integrations/handlers/pgvector_handler/__about__.py +9 -0
  1160. mindsdb/integrations/handlers/pgvector_handler/__init__.py +29 -0
  1161. mindsdb/integrations/handlers/pgvector_handler/connection_args.py +54 -0
  1162. mindsdb/integrations/handlers/pgvector_handler/icon.svg +23 -0
  1163. mindsdb/integrations/handlers/pgvector_handler/pgvector_handler.py +447 -0
  1164. mindsdb/integrations/handlers/pgvector_handler/requirements.txt +0 -0
  1165. mindsdb/integrations/handlers/phoenix_handler/__about__.py +9 -0
  1166. mindsdb/integrations/handlers/phoenix_handler/__init__.py +20 -0
  1167. mindsdb/integrations/handlers/phoenix_handler/connection_args.py +50 -0
  1168. mindsdb/integrations/handlers/phoenix_handler/icon.png +0 -0
  1169. mindsdb/integrations/handlers/phoenix_handler/phoenix_handler.py +229 -0
  1170. mindsdb/integrations/handlers/phoenix_handler/requirements.txt +2 -0
  1171. mindsdb/integrations/handlers/phoenix_handler/tests/__init__.py +0 -0
  1172. mindsdb/integrations/handlers/phoenix_handler/tests/test_phoenix_handler.py +33 -0
  1173. mindsdb/integrations/handlers/pinecone_handler/__about__.py +9 -0
  1174. mindsdb/integrations/handlers/pinecone_handler/__init__.py +29 -0
  1175. mindsdb/integrations/handlers/pinecone_handler/connection_args.py +53 -0
  1176. mindsdb/integrations/handlers/pinecone_handler/icon.svg +21 -0
  1177. mindsdb/integrations/handlers/pinecone_handler/pinecone_handler.py +304 -0
  1178. mindsdb/integrations/handlers/pinecone_handler/requirements.txt +1 -0
  1179. mindsdb/integrations/handlers/pinecone_handler/tests/__init__.py +0 -0
  1180. mindsdb/integrations/handlers/pinot_handler/__about__.py +9 -0
  1181. mindsdb/integrations/handlers/pinot_handler/__init__.py +20 -0
  1182. mindsdb/integrations/handlers/pinot_handler/connection_args.py +49 -0
  1183. mindsdb/integrations/handlers/pinot_handler/icon.svg +7 -0
  1184. mindsdb/integrations/handlers/pinot_handler/pinot_handler.py +223 -0
  1185. mindsdb/integrations/handlers/pinot_handler/requirements.txt +1 -0
  1186. mindsdb/integrations/handlers/pinot_handler/tests/__init__.py +0 -0
  1187. mindsdb/integrations/handlers/pinot_handler/tests/test_pinot_handler.py +36 -0
  1188. mindsdb/integrations/handlers/pirateweather_handler/__about__.py +9 -0
  1189. mindsdb/integrations/handlers/pirateweather_handler/__init__.py +29 -0
  1190. mindsdb/integrations/handlers/pirateweather_handler/connection_args.py +14 -0
  1191. mindsdb/integrations/handlers/pirateweather_handler/icon.png +0 -0
  1192. mindsdb/integrations/handlers/pirateweather_handler/pirateweather_handler.py +236 -0
  1193. mindsdb/integrations/handlers/plaid_handler/__about__.py +9 -0
  1194. mindsdb/integrations/handlers/plaid_handler/__init__.py +21 -0
  1195. mindsdb/integrations/handlers/plaid_handler/icon.svg +3 -0
  1196. mindsdb/integrations/handlers/plaid_handler/plaid_handler.py +225 -0
  1197. mindsdb/integrations/handlers/plaid_handler/plaid_tables.py +159 -0
  1198. mindsdb/integrations/handlers/plaid_handler/requirements.txt +1 -0
  1199. mindsdb/integrations/handlers/plaid_handler/utils.py +9 -0
  1200. mindsdb/integrations/handlers/planetscale_handler/__about__.py +9 -0
  1201. mindsdb/integrations/handlers/planetscale_handler/__init__.py +20 -0
  1202. mindsdb/integrations/handlers/planetscale_handler/connection_args.py +36 -0
  1203. mindsdb/integrations/handlers/planetscale_handler/icon.svg +3 -0
  1204. mindsdb/integrations/handlers/planetscale_handler/planetscale_handler.py +14 -0
  1205. mindsdb/integrations/handlers/planetscale_handler/requirements.txt +1 -0
  1206. mindsdb/integrations/handlers/popularity_recommender_handler/__about__.py +9 -0
  1207. mindsdb/integrations/handlers/popularity_recommender_handler/__init__.py +21 -0
  1208. mindsdb/integrations/handlers/popularity_recommender_handler/icon.svg +10 -0
  1209. mindsdb/integrations/handlers/popularity_recommender_handler/popularity_recommender_handler.py +103 -0
  1210. mindsdb/integrations/handlers/popularity_recommender_handler/requirements.txt +1 -0
  1211. mindsdb/integrations/handlers/portkey_handler/__about__.py +9 -0
  1212. mindsdb/integrations/handlers/portkey_handler/__init__.py +22 -0
  1213. mindsdb/integrations/handlers/portkey_handler/icon.svg +9 -0
  1214. mindsdb/integrations/handlers/portkey_handler/portkey_handler.py +79 -0
  1215. mindsdb/integrations/handlers/portkey_handler/requirements.txt +1 -0
  1216. mindsdb/integrations/handlers/postgres_handler/__about__.py +9 -0
  1217. mindsdb/integrations/handlers/postgres_handler/__init__.py +20 -0
  1218. mindsdb/integrations/handlers/postgres_handler/connection_args.py +65 -0
  1219. mindsdb/integrations/handlers/postgres_handler/icon.svg +23 -0
  1220. mindsdb/integrations/handlers/postgres_handler/postgres_handler.py +396 -0
  1221. mindsdb/integrations/handlers/postgres_handler/tests/__init__.py +0 -0
  1222. mindsdb/integrations/handlers/postgres_handler/tests/test_postgres_handler.py +172 -0
  1223. mindsdb/integrations/handlers/pycaret_handler/__about__.py +9 -0
  1224. mindsdb/integrations/handlers/pycaret_handler/__init__.py +22 -0
  1225. mindsdb/integrations/handlers/pycaret_handler/icon.png +0 -0
  1226. mindsdb/integrations/handlers/pycaret_handler/pycaret_handler.py +116 -0
  1227. mindsdb/integrations/handlers/pycaret_handler/requirements.txt +2 -0
  1228. mindsdb/integrations/handlers/pycaret_handler/test/__init__.py +0 -0
  1229. mindsdb/integrations/handlers/pycaret_handler/test/test_pycaret.py +242 -0
  1230. mindsdb/integrations/handlers/pypi_handler/__about__.py +9 -0
  1231. mindsdb/integrations/handlers/pypi_handler/__init__.py +28 -0
  1232. mindsdb/integrations/handlers/pypi_handler/api.py +152 -0
  1233. mindsdb/integrations/handlers/pypi_handler/icon.svg +123 -0
  1234. mindsdb/integrations/handlers/pypi_handler/pypi_handler.py +73 -0
  1235. mindsdb/integrations/handlers/pypi_handler/pypi_tables.py +263 -0
  1236. mindsdb/integrations/handlers/qdrant_handler/__about__.py +9 -0
  1237. mindsdb/integrations/handlers/qdrant_handler/__init__.py +29 -0
  1238. mindsdb/integrations/handlers/qdrant_handler/connection_args.py +75 -0
  1239. mindsdb/integrations/handlers/qdrant_handler/icon.svg +10 -0
  1240. mindsdb/integrations/handlers/qdrant_handler/qdrant_handler.py +402 -0
  1241. mindsdb/integrations/handlers/qdrant_handler/requirements.txt +1 -0
  1242. mindsdb/integrations/handlers/questdb_handler/__about__.py +9 -0
  1243. mindsdb/integrations/handlers/questdb_handler/__init__.py +20 -0
  1244. mindsdb/integrations/handlers/questdb_handler/icon.svg +25 -0
  1245. mindsdb/integrations/handlers/questdb_handler/questdb_handler.py +72 -0
  1246. mindsdb/integrations/handlers/questdb_handler/requirements.txt +1 -0
  1247. mindsdb/integrations/handlers/questdb_handler/tests/__init__.py +0 -0
  1248. mindsdb/integrations/handlers/questdb_handler/tests/test_questdb_handler.py +35 -0
  1249. mindsdb/integrations/handlers/quickbooks_handler/__about__.py +9 -0
  1250. mindsdb/integrations/handlers/quickbooks_handler/__init__.py +21 -0
  1251. mindsdb/integrations/handlers/quickbooks_handler/icon.svg +11 -0
  1252. mindsdb/integrations/handlers/quickbooks_handler/quickbooks_handler.py +97 -0
  1253. mindsdb/integrations/handlers/quickbooks_handler/quickbooks_table.py +374 -0
  1254. mindsdb/integrations/handlers/quickbooks_handler/requirements.txt +1 -0
  1255. mindsdb/integrations/handlers/rag_handler/__about__.py +9 -0
  1256. mindsdb/integrations/handlers/rag_handler/__init__.py +29 -0
  1257. mindsdb/integrations/handlers/rag_handler/exceptions.py +26 -0
  1258. mindsdb/integrations/handlers/rag_handler/icon.svg +13 -0
  1259. mindsdb/integrations/handlers/rag_handler/ingest.py +185 -0
  1260. mindsdb/integrations/handlers/rag_handler/rag.py +147 -0
  1261. mindsdb/integrations/handlers/rag_handler/rag_handler.py +144 -0
  1262. mindsdb/integrations/handlers/rag_handler/requirements.txt +6 -0
  1263. mindsdb/integrations/handlers/rag_handler/settings.py +479 -0
  1264. mindsdb/integrations/handlers/ray_serve_handler/__about__.py +9 -0
  1265. mindsdb/integrations/handlers/ray_serve_handler/__init__.py +18 -0
  1266. mindsdb/integrations/handlers/ray_serve_handler/icon.svg +3 -0
  1267. mindsdb/integrations/handlers/ray_serve_handler/ray_serve_handler.py +66 -0
  1268. mindsdb/integrations/handlers/reddit_handler/__about__.py +9 -0
  1269. mindsdb/integrations/handlers/reddit_handler/__init__.py +21 -0
  1270. mindsdb/integrations/handlers/reddit_handler/icon.svg +11 -0
  1271. mindsdb/integrations/handlers/reddit_handler/reddit_handler.py +106 -0
  1272. mindsdb/integrations/handlers/reddit_handler/reddit_tables.py +195 -0
  1273. mindsdb/integrations/handlers/reddit_handler/requirements.txt +1 -0
  1274. mindsdb/integrations/handlers/redshift_handler/__about__.py +9 -0
  1275. mindsdb/integrations/handlers/redshift_handler/__init__.py +20 -0
  1276. mindsdb/integrations/handlers/redshift_handler/connection_args.py +58 -0
  1277. mindsdb/integrations/handlers/redshift_handler/icon.svg +9 -0
  1278. mindsdb/integrations/handlers/redshift_handler/redshift_handler.py +69 -0
  1279. mindsdb/integrations/handlers/redshift_handler/tests/__init__.py +0 -0
  1280. mindsdb/integrations/handlers/redshift_handler/tests/test_redshift_handler.py +154 -0
  1281. mindsdb/integrations/handlers/replicate_handler/__about__.py +9 -0
  1282. mindsdb/integrations/handlers/replicate_handler/__init__.py +19 -0
  1283. mindsdb/integrations/handlers/replicate_handler/assets/Arjuna.png +0 -0
  1284. mindsdb/integrations/handlers/replicate_handler/assets/groot.png +0 -0
  1285. mindsdb/integrations/handlers/replicate_handler/assets/warrior.png +0 -0
  1286. mindsdb/integrations/handlers/replicate_handler/icon.svg +5 -0
  1287. mindsdb/integrations/handlers/replicate_handler/replicate_handler.py +162 -0
  1288. mindsdb/integrations/handlers/replicate_handler/requirements.txt +1 -0
  1289. mindsdb/integrations/handlers/rocket_chat_handler/__about__.py +9 -0
  1290. mindsdb/integrations/handlers/rocket_chat_handler/__init__.py +19 -0
  1291. mindsdb/integrations/handlers/rocket_chat_handler/icon.svg +6 -0
  1292. mindsdb/integrations/handlers/rocket_chat_handler/requirements.txt +1 -0
  1293. mindsdb/integrations/handlers/rocket_chat_handler/rocket_chat_handler.py +153 -0
  1294. mindsdb/integrations/handlers/rocket_chat_handler/rocket_chat_tables.py +201 -0
  1295. mindsdb/integrations/handlers/rockset_handler/__about__.py +9 -0
  1296. mindsdb/integrations/handlers/rockset_handler/__init__.py +21 -0
  1297. mindsdb/integrations/handlers/rockset_handler/connection_args.py +45 -0
  1298. mindsdb/integrations/handlers/rockset_handler/icon.svg +5 -0
  1299. mindsdb/integrations/handlers/rockset_handler/requirements.txt +1 -0
  1300. mindsdb/integrations/handlers/rockset_handler/rockset_handler.py +11 -0
  1301. mindsdb/integrations/handlers/rockset_handler/tests/__init__.py +0 -0
  1302. mindsdb/integrations/handlers/rockset_handler/tests/test.png +0 -0
  1303. mindsdb/integrations/handlers/rockset_handler/tests/test2.png +0 -0
  1304. mindsdb/integrations/handlers/rockset_handler/tests/test_rockset_handler.py +32 -0
  1305. mindsdb/integrations/handlers/s3_handler/__about__.py +9 -0
  1306. mindsdb/integrations/handlers/s3_handler/__init__.py +20 -0
  1307. mindsdb/integrations/handlers/s3_handler/connection_args.py +47 -0
  1308. mindsdb/integrations/handlers/s3_handler/icon.svg +15 -0
  1309. mindsdb/integrations/handlers/s3_handler/s3_handler.py +454 -0
  1310. mindsdb/integrations/handlers/s3_handler/tests/__init__.py +0 -0
  1311. mindsdb/integrations/handlers/s3_handler/tests/test_s3_handler.py +37 -0
  1312. mindsdb/integrations/handlers/salesforce_handler/__about__.py +9 -0
  1313. mindsdb/integrations/handlers/salesforce_handler/__init__.py +30 -0
  1314. mindsdb/integrations/handlers/salesforce_handler/connection_args.py +39 -0
  1315. mindsdb/integrations/handlers/salesforce_handler/icon.svg +1 -0
  1316. mindsdb/integrations/handlers/salesforce_handler/requirements.txt +1 -0
  1317. mindsdb/integrations/handlers/salesforce_handler/salesforce_handler.py +180 -0
  1318. mindsdb/integrations/handlers/salesforce_handler/salesforce_tables.py +129 -0
  1319. mindsdb/integrations/handlers/sap_erp_handler/__about__.py +9 -0
  1320. mindsdb/integrations/handlers/sap_erp_handler/__init__.py +27 -0
  1321. mindsdb/integrations/handlers/sap_erp_handler/api.py +79 -0
  1322. mindsdb/integrations/handlers/sap_erp_handler/icon.svg +13 -0
  1323. mindsdb/integrations/handlers/sap_erp_handler/sap_erp_handler.py +161 -0
  1324. mindsdb/integrations/handlers/sap_erp_handler/sap_erp_tables.py +1928 -0
  1325. mindsdb/integrations/handlers/sap_erp_handler/tests/__init__.py +0 -0
  1326. mindsdb/integrations/handlers/scylla_handler/__about__.py +9 -0
  1327. mindsdb/integrations/handlers/scylla_handler/__init__.py +21 -0
  1328. mindsdb/integrations/handlers/scylla_handler/connection_args.py +50 -0
  1329. mindsdb/integrations/handlers/scylla_handler/icon.svg +17 -0
  1330. mindsdb/integrations/handlers/scylla_handler/requirements.txt +1 -0
  1331. mindsdb/integrations/handlers/scylla_handler/scylla_handler.py +205 -0
  1332. mindsdb/integrations/handlers/scylla_handler/tests/__init__.py +0 -0
  1333. mindsdb/integrations/handlers/scylla_handler/tests/test_scylla_handler.py +38 -0
  1334. mindsdb/integrations/handlers/sendinblue_handler/__about__.py +9 -0
  1335. mindsdb/integrations/handlers/sendinblue_handler/__init__.py +27 -0
  1336. mindsdb/integrations/handlers/sendinblue_handler/icon.svg +3 -0
  1337. mindsdb/integrations/handlers/sendinblue_handler/requirements.txt +1 -0
  1338. mindsdb/integrations/handlers/sendinblue_handler/sendinblue_handler.py +94 -0
  1339. mindsdb/integrations/handlers/sendinblue_handler/sendinblue_tables.py +276 -0
  1340. mindsdb/integrations/handlers/sentence_transformers_handler/__about__.py +9 -0
  1341. mindsdb/integrations/handlers/sentence_transformers_handler/__init__.py +21 -0
  1342. mindsdb/integrations/handlers/sentence_transformers_handler/icon.svg +21 -0
  1343. mindsdb/integrations/handlers/sentence_transformers_handler/requirements.txt +1 -0
  1344. mindsdb/integrations/handlers/sentence_transformers_handler/sentence_transformers_handler.py +75 -0
  1345. mindsdb/integrations/handlers/sentence_transformers_handler/settings.py +12 -0
  1346. mindsdb/integrations/handlers/serpstack_handler/__about__.py +9 -0
  1347. mindsdb/integrations/handlers/serpstack_handler/__init__.py +27 -0
  1348. mindsdb/integrations/handlers/serpstack_handler/icon.svg +86 -0
  1349. mindsdb/integrations/handlers/serpstack_handler/serpstack_handler.py +123 -0
  1350. mindsdb/integrations/handlers/serpstack_handler/serpstack_tables.py +260 -0
  1351. mindsdb/integrations/handlers/sharepoint_handler/__about__.py +9 -0
  1352. mindsdb/integrations/handlers/sharepoint_handler/__init__.py +27 -0
  1353. mindsdb/integrations/handlers/sharepoint_handler/icon.svg +23 -0
  1354. mindsdb/integrations/handlers/sharepoint_handler/sharepoint_api.py +579 -0
  1355. mindsdb/integrations/handlers/sharepoint_handler/sharepoint_handler.py +147 -0
  1356. mindsdb/integrations/handlers/sharepoint_handler/sharepoint_tables.py +581 -0
  1357. mindsdb/integrations/handlers/sharepoint_handler/tests/__init__.py +0 -0
  1358. mindsdb/integrations/handlers/sharepoint_handler/tests/test_sharepoint_handler.py +53 -0
  1359. mindsdb/integrations/handlers/sharepoint_handler/utils.py +163 -0
  1360. mindsdb/integrations/handlers/sheets_handler/__about__.py +9 -0
  1361. mindsdb/integrations/handlers/sheets_handler/__init__.py +20 -0
  1362. mindsdb/integrations/handlers/sheets_handler/connection_args.py +20 -0
  1363. mindsdb/integrations/handlers/sheets_handler/icon.svg +55 -0
  1364. mindsdb/integrations/handlers/sheets_handler/sheets_handler.py +176 -0
  1365. mindsdb/integrations/handlers/sheets_handler/tests/__init__.py +0 -0
  1366. mindsdb/integrations/handlers/sheets_handler/tests/test_sheets_handler.py +33 -0
  1367. mindsdb/integrations/handlers/shopify_handler/__about__.py +9 -0
  1368. mindsdb/integrations/handlers/shopify_handler/__init__.py +27 -0
  1369. mindsdb/integrations/handlers/shopify_handler/icon.svg +5 -0
  1370. mindsdb/integrations/handlers/shopify_handler/requirements.txt +1 -0
  1371. mindsdb/integrations/handlers/shopify_handler/shopify_handler.py +143 -0
  1372. mindsdb/integrations/handlers/shopify_handler/shopify_tables.py +1083 -0
  1373. mindsdb/integrations/handlers/singlestore_handler/__about__.py +9 -0
  1374. mindsdb/integrations/handlers/singlestore_handler/__init__.py +21 -0
  1375. mindsdb/integrations/handlers/singlestore_handler/icon.svg +16 -0
  1376. mindsdb/integrations/handlers/singlestore_handler/requirements.txt +1 -0
  1377. mindsdb/integrations/handlers/singlestore_handler/singlestore_handler.py +12 -0
  1378. mindsdb/integrations/handlers/singlestore_handler/tests/__init__.py +0 -0
  1379. mindsdb/integrations/handlers/singlestore_handler/tests/test_singlestore_handler.py +42 -0
  1380. mindsdb/integrations/handlers/slack_handler/__about__.py +9 -0
  1381. mindsdb/integrations/handlers/slack_handler/__init__.py +28 -0
  1382. mindsdb/integrations/handlers/slack_handler/connection_args.py +26 -0
  1383. mindsdb/integrations/handlers/slack_handler/icon.svg +13 -0
  1384. mindsdb/integrations/handlers/slack_handler/requirements.txt +1 -0
  1385. mindsdb/integrations/handlers/slack_handler/slack_handler.py +339 -0
  1386. mindsdb/integrations/handlers/slack_handler/slack_tables.py +718 -0
  1387. mindsdb/integrations/handlers/slack_handler/tests/__init__.py +0 -0
  1388. mindsdb/integrations/handlers/slack_handler/tests/test_slack.py +27 -0
  1389. mindsdb/integrations/handlers/snowflake_handler/__about__.py +9 -0
  1390. mindsdb/integrations/handlers/snowflake_handler/__init__.py +21 -0
  1391. mindsdb/integrations/handlers/snowflake_handler/connection_args.py +63 -0
  1392. mindsdb/integrations/handlers/snowflake_handler/icon.svg +10 -0
  1393. mindsdb/integrations/handlers/snowflake_handler/requirements.txt +2 -0
  1394. mindsdb/integrations/handlers/snowflake_handler/snowflake_handler.py +280 -0
  1395. mindsdb/integrations/handlers/snowflake_handler/tests/__init__.py +0 -0
  1396. mindsdb/integrations/handlers/snowflake_handler/tests/test_snowflake_handler.py +230 -0
  1397. mindsdb/integrations/handlers/solace_handler/__about__.py +9 -0
  1398. mindsdb/integrations/handlers/solace_handler/__init__.py +19 -0
  1399. mindsdb/integrations/handlers/solace_handler/icon.svg +3 -0
  1400. mindsdb/integrations/handlers/solace_handler/requirements.txt +1 -0
  1401. mindsdb/integrations/handlers/solace_handler/solace_handler.py +169 -0
  1402. mindsdb/integrations/handlers/solr_handler/__about__.py +9 -0
  1403. mindsdb/integrations/handlers/solr_handler/__init__.py +20 -0
  1404. mindsdb/integrations/handlers/solr_handler/connection_args.py +46 -0
  1405. mindsdb/integrations/handlers/solr_handler/icon.svg +10 -0
  1406. mindsdb/integrations/handlers/solr_handler/requirements.txt +1 -0
  1407. mindsdb/integrations/handlers/solr_handler/solr_handler.py +176 -0
  1408. mindsdb/integrations/handlers/solr_handler/tests/__init__.py +0 -0
  1409. mindsdb/integrations/handlers/solr_handler/tests/test_solr_handler.py +38 -0
  1410. mindsdb/integrations/handlers/spacy_handler/__about__.py +9 -0
  1411. mindsdb/integrations/handlers/spacy_handler/__init__.py +19 -0
  1412. mindsdb/integrations/handlers/spacy_handler/icon.svg +3 -0
  1413. mindsdb/integrations/handlers/spacy_handler/requirements.txt +1 -0
  1414. mindsdb/integrations/handlers/spacy_handler/spacy_handler.py +194 -0
  1415. mindsdb/integrations/handlers/sqlany_handler/__about__.py +9 -0
  1416. mindsdb/integrations/handlers/sqlany_handler/__init__.py +20 -0
  1417. mindsdb/integrations/handlers/sqlany_handler/connection_args.py +46 -0
  1418. mindsdb/integrations/handlers/sqlany_handler/icon.svg +13 -0
  1419. mindsdb/integrations/handlers/sqlany_handler/requirements.txt +2 -0
  1420. mindsdb/integrations/handlers/sqlany_handler/sqlany_handler.py +179 -0
  1421. mindsdb/integrations/handlers/sqlite_handler/__about__.py +9 -0
  1422. mindsdb/integrations/handlers/sqlite_handler/__init__.py +20 -0
  1423. mindsdb/integrations/handlers/sqlite_handler/connection_args.py +16 -0
  1424. mindsdb/integrations/handlers/sqlite_handler/icon.svg +12 -0
  1425. mindsdb/integrations/handlers/sqlite_handler/sqlite_handler.py +184 -0
  1426. mindsdb/integrations/handlers/sqlite_handler/tests/__init__.py +0 -0
  1427. mindsdb/integrations/handlers/sqlite_handler/tests/test_sqlite_handler.py +32 -0
  1428. mindsdb/integrations/handlers/sqreamdb_handler/__about__.py +9 -0
  1429. mindsdb/integrations/handlers/sqreamdb_handler/__init__.py +20 -0
  1430. mindsdb/integrations/handlers/sqreamdb_handler/connection_args.py +48 -0
  1431. mindsdb/integrations/handlers/sqreamdb_handler/icon.svg +21 -0
  1432. mindsdb/integrations/handlers/sqreamdb_handler/requirements.txt +2 -0
  1433. mindsdb/integrations/handlers/sqreamdb_handler/sqreamdb_handler.py +154 -0
  1434. mindsdb/integrations/handlers/sqreamdb_handler/tests/__init__.py +0 -0
  1435. mindsdb/integrations/handlers/sqreamdb_handler/tests/test_sqreamdb_handler.py +45 -0
  1436. mindsdb/integrations/handlers/stabilityai_handler/__about__.py +9 -0
  1437. mindsdb/integrations/handlers/stabilityai_handler/__init__.py +19 -0
  1438. mindsdb/integrations/handlers/stabilityai_handler/icon.svg +10 -0
  1439. mindsdb/integrations/handlers/stabilityai_handler/requirements.txt +2 -0
  1440. mindsdb/integrations/handlers/stabilityai_handler/stabilityai.py +186 -0
  1441. mindsdb/integrations/handlers/stabilityai_handler/stabilityai_handler.py +172 -0
  1442. mindsdb/integrations/handlers/starrocks_handler/__about__.py +9 -0
  1443. mindsdb/integrations/handlers/starrocks_handler/__init__.py +20 -0
  1444. mindsdb/integrations/handlers/starrocks_handler/icon.svg +9 -0
  1445. mindsdb/integrations/handlers/starrocks_handler/requirements.txt +1 -0
  1446. mindsdb/integrations/handlers/starrocks_handler/starrocks_handler.py +48 -0
  1447. mindsdb/integrations/handlers/starrocks_handler/tests/__init__.py +0 -0
  1448. mindsdb/integrations/handlers/starrocks_handler/tests/test_starrocks_handler.py +56 -0
  1449. mindsdb/integrations/handlers/statsforecast_handler/__about__.py +9 -0
  1450. mindsdb/integrations/handlers/statsforecast_handler/__init__.py +19 -0
  1451. mindsdb/integrations/handlers/statsforecast_handler/icon.svg +5 -0
  1452. mindsdb/integrations/handlers/statsforecast_handler/requirements.txt +1 -0
  1453. mindsdb/integrations/handlers/statsforecast_handler/requirements_extra.txt +1 -0
  1454. mindsdb/integrations/handlers/statsforecast_handler/statsforecast_handler.py +192 -0
  1455. mindsdb/integrations/handlers/strapi_handler/__about__.py +9 -0
  1456. mindsdb/integrations/handlers/strapi_handler/__init__.py +28 -0
  1457. mindsdb/integrations/handlers/strapi_handler/icon.svg +7 -0
  1458. mindsdb/integrations/handlers/strapi_handler/strapi_handler.py +153 -0
  1459. mindsdb/integrations/handlers/strapi_handler/strapi_tables.py +131 -0
  1460. mindsdb/integrations/handlers/strapi_handler/tests/__init__.py +0 -0
  1461. mindsdb/integrations/handlers/strapi_handler/tests/test_strapi_handler.py +51 -0
  1462. mindsdb/integrations/handlers/strava_handler/__about__.py +9 -0
  1463. mindsdb/integrations/handlers/strava_handler/__init__.py +27 -0
  1464. mindsdb/integrations/handlers/strava_handler/icon.svg +12 -0
  1465. mindsdb/integrations/handlers/strava_handler/requirements.txt +1 -0
  1466. mindsdb/integrations/handlers/strava_handler/strava_handler.py +113 -0
  1467. mindsdb/integrations/handlers/strava_handler/strava_tables.py +247 -0
  1468. mindsdb/integrations/handlers/stripe_handler/__about__.py +9 -0
  1469. mindsdb/integrations/handlers/stripe_handler/__init__.py +27 -0
  1470. mindsdb/integrations/handlers/stripe_handler/icon.svg +4 -0
  1471. mindsdb/integrations/handlers/stripe_handler/requirements.txt +1 -0
  1472. mindsdb/integrations/handlers/stripe_handler/stripe_handler.py +102 -0
  1473. mindsdb/integrations/handlers/stripe_handler/stripe_tables.py +508 -0
  1474. mindsdb/integrations/handlers/supabase_handler/__about__.py +9 -0
  1475. mindsdb/integrations/handlers/supabase_handler/__init__.py +20 -0
  1476. mindsdb/integrations/handlers/supabase_handler/icon.svg +15 -0
  1477. mindsdb/integrations/handlers/supabase_handler/supabase_handler.py +11 -0
  1478. mindsdb/integrations/handlers/supabase_handler/tests/__init__.py +0 -0
  1479. mindsdb/integrations/handlers/supabase_handler/tests/test_supabase_handler.py +46 -0
  1480. mindsdb/integrations/handlers/surrealdb_handler/__about__.py +9 -0
  1481. mindsdb/integrations/handlers/surrealdb_handler/__init__.py +20 -0
  1482. mindsdb/integrations/handlers/surrealdb_handler/connection_args.py +52 -0
  1483. mindsdb/integrations/handlers/surrealdb_handler/icon.svg +9 -0
  1484. mindsdb/integrations/handlers/surrealdb_handler/requirements.txt +1 -0
  1485. mindsdb/integrations/handlers/surrealdb_handler/surrealdb_handler.py +196 -0
  1486. mindsdb/integrations/handlers/surrealdb_handler/tests/__init__.py +0 -0
  1487. mindsdb/integrations/handlers/surrealdb_handler/tests/test_surrealdb_handler.py +57 -0
  1488. mindsdb/integrations/handlers/surrealdb_handler/utils/__init__.py +0 -0
  1489. mindsdb/integrations/handlers/surrealdb_handler/utils/surreal_get_info.py +20 -0
  1490. mindsdb/integrations/handlers/symbl_handler/__about__.py +9 -0
  1491. mindsdb/integrations/handlers/symbl_handler/__init__.py +28 -0
  1492. mindsdb/integrations/handlers/symbl_handler/connection_args.py +25 -0
  1493. mindsdb/integrations/handlers/symbl_handler/icon.svg +4 -0
  1494. mindsdb/integrations/handlers/symbl_handler/requirements.txt +1 -0
  1495. mindsdb/integrations/handlers/symbl_handler/symbl_handler.py +106 -0
  1496. mindsdb/integrations/handlers/symbl_handler/symbl_tables.py +648 -0
  1497. mindsdb/integrations/handlers/tdengine_handler/__about__.py +9 -0
  1498. mindsdb/integrations/handlers/tdengine_handler/__init__.py +20 -0
  1499. mindsdb/integrations/handlers/tdengine_handler/connection_args.py +36 -0
  1500. mindsdb/integrations/handlers/tdengine_handler/icon.svg +59 -0
  1501. mindsdb/integrations/handlers/tdengine_handler/requirements.txt +1 -0
  1502. mindsdb/integrations/handlers/tdengine_handler/tdengine_handler.py +146 -0
  1503. mindsdb/integrations/handlers/tdengine_handler/tests/__init__.py +0 -0
  1504. mindsdb/integrations/handlers/tdengine_handler/tests/test_tdengine_handler.py +48 -0
  1505. mindsdb/integrations/handlers/teradata_handler/__about__.py +9 -0
  1506. mindsdb/integrations/handlers/teradata_handler/__init__.py +20 -0
  1507. mindsdb/integrations/handlers/teradata_handler/connection_args.py +39 -0
  1508. mindsdb/integrations/handlers/teradata_handler/icon.svg +4 -0
  1509. mindsdb/integrations/handlers/teradata_handler/requirements.txt +2 -0
  1510. mindsdb/integrations/handlers/teradata_handler/teradata_handler.py +245 -0
  1511. mindsdb/integrations/handlers/tidb_handler/__about__.py +9 -0
  1512. mindsdb/integrations/handlers/tidb_handler/__init__.py +21 -0
  1513. mindsdb/integrations/handlers/tidb_handler/connection_args.py +36 -0
  1514. mindsdb/integrations/handlers/tidb_handler/icon.svg +5 -0
  1515. mindsdb/integrations/handlers/tidb_handler/requirements.txt +1 -0
  1516. mindsdb/integrations/handlers/tidb_handler/tests/__init__.py +0 -0
  1517. mindsdb/integrations/handlers/tidb_handler/tests/test_tidb_handler.py +45 -0
  1518. mindsdb/integrations/handlers/tidb_handler/tidb_handler.py +11 -0
  1519. mindsdb/integrations/handlers/timegpt_handler/__about__.py +9 -0
  1520. mindsdb/integrations/handlers/timegpt_handler/__init__.py +18 -0
  1521. mindsdb/integrations/handlers/timegpt_handler/icon.svg +5 -0
  1522. mindsdb/integrations/handlers/timegpt_handler/requirements.txt +1 -0
  1523. mindsdb/integrations/handlers/timegpt_handler/timegpt_handler.py +205 -0
  1524. mindsdb/integrations/handlers/timescaledb_handler/__about__.py +9 -0
  1525. mindsdb/integrations/handlers/timescaledb_handler/__init__.py +19 -0
  1526. mindsdb/integrations/handlers/timescaledb_handler/icon.svg +9 -0
  1527. mindsdb/integrations/handlers/timescaledb_handler/tests/__init__.py +0 -0
  1528. mindsdb/integrations/handlers/timescaledb_handler/tests/test_timescaledb_handler.py +47 -0
  1529. mindsdb/integrations/handlers/timescaledb_handler/timescaledb_handler.py +46 -0
  1530. mindsdb/integrations/handlers/tpot_handler/__about__.py +9 -0
  1531. mindsdb/integrations/handlers/tpot_handler/__init__.py +19 -0
  1532. mindsdb/integrations/handlers/tpot_handler/icon.png +0 -0
  1533. mindsdb/integrations/handlers/tpot_handler/requirements.txt +2 -0
  1534. mindsdb/integrations/handlers/tpot_handler/tpot_handler.py +80 -0
  1535. mindsdb/integrations/handlers/trino_handler/__about__.py +9 -0
  1536. mindsdb/integrations/handlers/trino_handler/__init__.py +19 -0
  1537. mindsdb/integrations/handlers/trino_handler/icon.svg +23 -0
  1538. mindsdb/integrations/handlers/trino_handler/requirements.txt +2 -0
  1539. mindsdb/integrations/handlers/trino_handler/tests/__init__.py +0 -0
  1540. mindsdb/integrations/handlers/trino_handler/tests/test_trino_handler.py +48 -0
  1541. mindsdb/integrations/handlers/trino_handler/trino_config_provider.py +12 -0
  1542. mindsdb/integrations/handlers/trino_handler/trino_handler.py +182 -0
  1543. mindsdb/integrations/handlers/tripadvisor_handler/__about__.py +9 -0
  1544. mindsdb/integrations/handlers/tripadvisor_handler/__init__.py +27 -0
  1545. mindsdb/integrations/handlers/tripadvisor_handler/icon.svg +4 -0
  1546. mindsdb/integrations/handlers/tripadvisor_handler/tripadvisor_api.py +215 -0
  1547. mindsdb/integrations/handlers/tripadvisor_handler/tripadvisor_handler.py +275 -0
  1548. mindsdb/integrations/handlers/tripadvisor_handler/tripadvisor_table.py +477 -0
  1549. mindsdb/integrations/handlers/twelve_labs_handler/__about__.py +9 -0
  1550. mindsdb/integrations/handlers/twelve_labs_handler/__init__.py +19 -0
  1551. mindsdb/integrations/handlers/twelve_labs_handler/icon.svg +7 -0
  1552. mindsdb/integrations/handlers/twelve_labs_handler/requirements.txt +2 -0
  1553. mindsdb/integrations/handlers/twelve_labs_handler/settings.py +271 -0
  1554. mindsdb/integrations/handlers/twelve_labs_handler/twelve_labs_api_client.py +567 -0
  1555. mindsdb/integrations/handlers/twelve_labs_handler/twelve_labs_handler.py +285 -0
  1556. mindsdb/integrations/handlers/twilio_handler/__about__.py +9 -0
  1557. mindsdb/integrations/handlers/twilio_handler/__init__.py +21 -0
  1558. mindsdb/integrations/handlers/twilio_handler/icon.svg +11 -0
  1559. mindsdb/integrations/handlers/twilio_handler/requirements.txt +1 -0
  1560. mindsdb/integrations/handlers/twilio_handler/twilio_handler.py +385 -0
  1561. mindsdb/integrations/handlers/twitter_handler/__about__.py +9 -0
  1562. mindsdb/integrations/handlers/twitter_handler/__init__.py +21 -0
  1563. mindsdb/integrations/handlers/twitter_handler/icon.svg +10 -0
  1564. mindsdb/integrations/handlers/twitter_handler/requirements.txt +1 -0
  1565. mindsdb/integrations/handlers/twitter_handler/twitter_handler.py +471 -0
  1566. mindsdb/integrations/handlers/unify_handler/__about__.py +9 -0
  1567. mindsdb/integrations/handlers/unify_handler/__init__.py +22 -0
  1568. mindsdb/integrations/handlers/unify_handler/creation_args.py +14 -0
  1569. mindsdb/integrations/handlers/unify_handler/icon.svg +25 -0
  1570. mindsdb/integrations/handlers/unify_handler/model_using_args.py +5 -0
  1571. mindsdb/integrations/handlers/unify_handler/requirements.txt +1 -0
  1572. mindsdb/integrations/handlers/unify_handler/tests/__init__.py +0 -0
  1573. mindsdb/integrations/handlers/unify_handler/tests/test_unify_handler.py +60 -0
  1574. mindsdb/integrations/handlers/unify_handler/unify_handler.py +67 -0
  1575. mindsdb/integrations/handlers/vertex_handler/__about__.py +9 -0
  1576. mindsdb/integrations/handlers/vertex_handler/__init__.py +19 -0
  1577. mindsdb/integrations/handlers/vertex_handler/icon.png +0 -0
  1578. mindsdb/integrations/handlers/vertex_handler/requirements.txt +1 -0
  1579. mindsdb/integrations/handlers/vertex_handler/vertex_client.py +95 -0
  1580. mindsdb/integrations/handlers/vertex_handler/vertex_handler.py +87 -0
  1581. mindsdb/integrations/handlers/vertica_handler/__about__.py +9 -0
  1582. mindsdb/integrations/handlers/vertica_handler/__init__.py +20 -0
  1583. mindsdb/integrations/handlers/vertica_handler/connection_args.py +41 -0
  1584. mindsdb/integrations/handlers/vertica_handler/icon.svg +8 -0
  1585. mindsdb/integrations/handlers/vertica_handler/requirements.txt +2 -0
  1586. mindsdb/integrations/handlers/vertica_handler/tests/__init__.py +0 -0
  1587. mindsdb/integrations/handlers/vertica_handler/tests/test_vertica_handler.py +53 -0
  1588. mindsdb/integrations/handlers/vertica_handler/vertica_handler.py +160 -0
  1589. mindsdb/integrations/handlers/vitess_handler/__about__.py +9 -0
  1590. mindsdb/integrations/handlers/vitess_handler/__init__.py +20 -0
  1591. mindsdb/integrations/handlers/vitess_handler/icon.svg +23 -0
  1592. mindsdb/integrations/handlers/vitess_handler/requirements.txt +1 -0
  1593. mindsdb/integrations/handlers/vitess_handler/tests/__init__.py +0 -0
  1594. mindsdb/integrations/handlers/vitess_handler/tests/test_vitess_handler.py +56 -0
  1595. mindsdb/integrations/handlers/vitess_handler/vitess_handler.py +48 -0
  1596. mindsdb/integrations/handlers/weaviate_handler/__about__.py +9 -0
  1597. mindsdb/integrations/handlers/weaviate_handler/__init__.py +29 -0
  1598. mindsdb/integrations/handlers/weaviate_handler/connection_args.py +29 -0
  1599. mindsdb/integrations/handlers/weaviate_handler/icon.svg +197 -0
  1600. mindsdb/integrations/handlers/weaviate_handler/requirements.txt +1 -0
  1601. mindsdb/integrations/handlers/weaviate_handler/weaviate_handler.py +652 -0
  1602. mindsdb/integrations/handlers/web_handler/__about__.py +9 -0
  1603. mindsdb/integrations/handlers/web_handler/__init__.py +24 -0
  1604. mindsdb/integrations/handlers/web_handler/icon.svg +11 -0
  1605. mindsdb/integrations/handlers/web_handler/requirements.txt +3 -0
  1606. mindsdb/integrations/handlers/web_handler/urlcrawl_helpers.py +343 -0
  1607. mindsdb/integrations/handlers/web_handler/web_handler.py +91 -0
  1608. mindsdb/integrations/handlers/webz_handler/__about__.py +9 -0
  1609. mindsdb/integrations/handlers/webz_handler/__init__.py +28 -0
  1610. mindsdb/integrations/handlers/webz_handler/icon.svg +4 -0
  1611. mindsdb/integrations/handlers/webz_handler/requirements.txt +3 -0
  1612. mindsdb/integrations/handlers/webz_handler/webz_handler.py +175 -0
  1613. mindsdb/integrations/handlers/webz_handler/webz_tables.py +218 -0
  1614. mindsdb/integrations/handlers/whatsapp_handler/__about__.py +9 -0
  1615. mindsdb/integrations/handlers/whatsapp_handler/__init__.py +28 -0
  1616. mindsdb/integrations/handlers/whatsapp_handler/icon.svg +19 -0
  1617. mindsdb/integrations/handlers/whatsapp_handler/requirements.txt +1 -0
  1618. mindsdb/integrations/handlers/whatsapp_handler/whatsapp_handler.py +420 -0
  1619. mindsdb/integrations/handlers/writer_handler/__about__.py +9 -0
  1620. mindsdb/integrations/handlers/writer_handler/__init__.py +30 -0
  1621. mindsdb/integrations/handlers/writer_handler/evaluate.py +362 -0
  1622. mindsdb/integrations/handlers/writer_handler/icon.svg +10 -0
  1623. mindsdb/integrations/handlers/writer_handler/ingest.py +11 -0
  1624. mindsdb/integrations/handlers/writer_handler/rag.py +14 -0
  1625. mindsdb/integrations/handlers/writer_handler/requirements.txt +4 -0
  1626. mindsdb/integrations/handlers/writer_handler/settings.py +86 -0
  1627. mindsdb/integrations/handlers/writer_handler/writer_handler.py +188 -0
  1628. mindsdb/integrations/handlers/xata_handler/__about__.py +9 -0
  1629. mindsdb/integrations/handlers/xata_handler/__init__.py +29 -0
  1630. mindsdb/integrations/handlers/xata_handler/connection_args.py +35 -0
  1631. mindsdb/integrations/handlers/xata_handler/icon.svg +29 -0
  1632. mindsdb/integrations/handlers/xata_handler/requirements.txt +1 -0
  1633. mindsdb/integrations/handlers/xata_handler/tests/__init__.py +0 -0
  1634. mindsdb/integrations/handlers/xata_handler/xata_handler.py +347 -0
  1635. mindsdb/integrations/handlers/youtube_handler/__about__.py +9 -0
  1636. mindsdb/integrations/handlers/youtube_handler/__init__.py +27 -0
  1637. mindsdb/integrations/handlers/youtube_handler/icon.svg +11 -0
  1638. mindsdb/integrations/handlers/youtube_handler/requirements.txt +2 -0
  1639. mindsdb/integrations/handlers/youtube_handler/youtube_handler.py +164 -0
  1640. mindsdb/integrations/handlers/youtube_handler/youtube_tables.py +448 -0
  1641. mindsdb/integrations/handlers/yugabyte_handler/__about__.py +9 -0
  1642. mindsdb/integrations/handlers/yugabyte_handler/__init__.py +19 -0
  1643. mindsdb/integrations/handlers/yugabyte_handler/icon.svg +4 -0
  1644. mindsdb/integrations/handlers/yugabyte_handler/tests/__init__.py +0 -0
  1645. mindsdb/integrations/handlers/yugabyte_handler/tests/test_yugabyte_handler.py +49 -0
  1646. mindsdb/integrations/handlers/yugabyte_handler/yugabyte_handler.py +60 -0
  1647. mindsdb/integrations/handlers/zendesk_handler/__about__.py +9 -0
  1648. mindsdb/integrations/handlers/zendesk_handler/__init__.py +28 -0
  1649. mindsdb/integrations/handlers/zendesk_handler/connection_args.py +33 -0
  1650. mindsdb/integrations/handlers/zendesk_handler/icon.svg +1 -0
  1651. mindsdb/integrations/handlers/zendesk_handler/requirements.txt +1 -0
  1652. mindsdb/integrations/handlers/zendesk_handler/zendesk_handler.py +89 -0
  1653. mindsdb/integrations/handlers/zendesk_handler/zendesk_tables.py +463 -0
  1654. mindsdb/integrations/handlers/zipcodebase_handler/__about__.py +9 -0
  1655. mindsdb/integrations/handlers/zipcodebase_handler/__init__.py +28 -0
  1656. mindsdb/integrations/handlers/zipcodebase_handler/connection_args.py +18 -0
  1657. mindsdb/integrations/handlers/zipcodebase_handler/icon.svg +4 -0
  1658. mindsdb/integrations/handlers/zipcodebase_handler/tests/__init__.py +0 -0
  1659. mindsdb/integrations/handlers/zipcodebase_handler/zipcodebase.py +67 -0
  1660. mindsdb/integrations/handlers/zipcodebase_handler/zipcodebase_handler.py +107 -0
  1661. mindsdb/integrations/handlers/zipcodebase_handler/zipcodebase_tables.py +499 -0
  1662. mindsdb/integrations/handlers/zotero_handler/__about__.py +9 -0
  1663. mindsdb/integrations/handlers/zotero_handler/__init__.py +21 -0
  1664. mindsdb/integrations/handlers/zotero_handler/icon.svg +102 -0
  1665. mindsdb/integrations/handlers/zotero_handler/requirements.txt +1 -0
  1666. mindsdb/integrations/handlers/zotero_handler/zotero_handler.py +109 -0
  1667. mindsdb/integrations/handlers/zotero_handler/zotero_tables.py +157 -0
  1668. mindsdb/integrations/libs/__init__.py +3 -0
  1669. mindsdb/integrations/libs/api_handler.py +436 -0
  1670. mindsdb/integrations/libs/api_handler_exceptions.py +18 -0
  1671. mindsdb/integrations/libs/base.py +355 -0
  1672. mindsdb/integrations/libs/const.py +23 -0
  1673. mindsdb/integrations/libs/llm/__init__.py +0 -0
  1674. mindsdb/integrations/libs/llm/config.py +106 -0
  1675. mindsdb/integrations/libs/llm/utils.py +603 -0
  1676. mindsdb/integrations/libs/ml_exec_base.py +453 -0
  1677. mindsdb/integrations/libs/ml_handler_process/__init__.py +8 -0
  1678. mindsdb/integrations/libs/ml_handler_process/create_engine_process.py +28 -0
  1679. mindsdb/integrations/libs/ml_handler_process/create_validation_process.py +14 -0
  1680. mindsdb/integrations/libs/ml_handler_process/describe_process.py +117 -0
  1681. mindsdb/integrations/libs/ml_handler_process/func_call_process.py +26 -0
  1682. mindsdb/integrations/libs/ml_handler_process/handlers_cacher.py +28 -0
  1683. mindsdb/integrations/libs/ml_handler_process/learn_process.py +156 -0
  1684. mindsdb/integrations/libs/ml_handler_process/predict_process.py +35 -0
  1685. mindsdb/integrations/libs/ml_handler_process/update_engine_process.py +28 -0
  1686. mindsdb/integrations/libs/ml_handler_process/update_process.py +27 -0
  1687. mindsdb/integrations/libs/process_cache.py +430 -0
  1688. mindsdb/integrations/libs/realtime_chat_handler.py +33 -0
  1689. mindsdb/integrations/libs/response.py +95 -0
  1690. mindsdb/integrations/libs/storage_handler.py +88 -0
  1691. mindsdb/integrations/libs/vectordatabase_handler.py +534 -0
  1692. mindsdb/integrations/utilities/__init__.py +0 -0
  1693. mindsdb/integrations/utilities/datasets/__init__.py +0 -0
  1694. mindsdb/integrations/utilities/datasets/dataset.py +73 -0
  1695. mindsdb/integrations/utilities/datasets/question_answering/fda_style_qa.csv +21 -0
  1696. mindsdb/integrations/utilities/datasets/question_answering/squad_v2_val_100_sample.csv +106 -0
  1697. mindsdb/integrations/utilities/date_utils.py +79 -0
  1698. mindsdb/integrations/utilities/handler_utils.py +70 -0
  1699. mindsdb/integrations/utilities/handlers/__init__.py +0 -0
  1700. mindsdb/integrations/utilities/handlers/api_utilities/__init__.py +1 -0
  1701. mindsdb/integrations/utilities/handlers/api_utilities/microsoft/__init__.py +1 -0
  1702. mindsdb/integrations/utilities/handlers/api_utilities/microsoft/ms_graph_api_utilities.py +138 -0
  1703. mindsdb/integrations/utilities/handlers/auth_utilities/__init__.py +2 -0
  1704. mindsdb/integrations/utilities/handlers/auth_utilities/exceptions.py +11 -0
  1705. mindsdb/integrations/utilities/handlers/auth_utilities/google/__init__.py +2 -0
  1706. mindsdb/integrations/utilities/handlers/auth_utilities/google/google_service_account_oauth_utilities.py +59 -0
  1707. mindsdb/integrations/utilities/handlers/auth_utilities/google/google_user_oauth_utilities.py +108 -0
  1708. mindsdb/integrations/utilities/handlers/auth_utilities/microsoft/__init__.py +1 -0
  1709. mindsdb/integrations/utilities/handlers/auth_utilities/microsoft/ms_graph_api_auth_utilities.py +128 -0
  1710. mindsdb/integrations/utilities/handlers/query_utilities/__init__.py +4 -0
  1711. mindsdb/integrations/utilities/handlers/query_utilities/base_query_utilities.py +63 -0
  1712. mindsdb/integrations/utilities/handlers/query_utilities/delete_query_utilities.py +44 -0
  1713. mindsdb/integrations/utilities/handlers/query_utilities/exceptions.py +17 -0
  1714. mindsdb/integrations/utilities/handlers/query_utilities/insert_query_utilities.py +71 -0
  1715. mindsdb/integrations/utilities/handlers/query_utilities/select_query_utilities.py +134 -0
  1716. mindsdb/integrations/utilities/handlers/query_utilities/update_query_utilities.py +67 -0
  1717. mindsdb/integrations/utilities/handlers/validation_utilities/__init__.py +1 -0
  1718. mindsdb/integrations/utilities/handlers/validation_utilities/parameter_validation_utilities.py +18 -0
  1719. mindsdb/integrations/utilities/install.py +134 -0
  1720. mindsdb/integrations/utilities/query_traversal.py +239 -0
  1721. mindsdb/integrations/utilities/rag/__init__.py +0 -0
  1722. mindsdb/integrations/utilities/rag/chains/__init__.py +0 -0
  1723. mindsdb/integrations/utilities/rag/chains/map_reduce_summarizer_chain.py +218 -0
  1724. mindsdb/integrations/utilities/rag/config_loader.py +77 -0
  1725. mindsdb/integrations/utilities/rag/loaders/__init__.py +0 -0
  1726. mindsdb/integrations/utilities/rag/loaders/file_loader.py +44 -0
  1727. mindsdb/integrations/utilities/rag/loaders/vector_store_loader/MDBVectorStore.py +54 -0
  1728. mindsdb/integrations/utilities/rag/loaders/vector_store_loader/__init__.py +0 -0
  1729. mindsdb/integrations/utilities/rag/loaders/vector_store_loader/pgvector.py +84 -0
  1730. mindsdb/integrations/utilities/rag/loaders/vector_store_loader/vector_store_loader.py +60 -0
  1731. mindsdb/integrations/utilities/rag/pipelines/__init__.py +0 -0
  1732. mindsdb/integrations/utilities/rag/pipelines/rag.py +253 -0
  1733. mindsdb/integrations/utilities/rag/rag_pipeline_builder.py +83 -0
  1734. mindsdb/integrations/utilities/rag/rerankers/__init__.py +0 -0
  1735. mindsdb/integrations/utilities/rag/rerankers/reranker_compressor.py +156 -0
  1736. mindsdb/integrations/utilities/rag/retrievers/__init__.py +0 -0
  1737. mindsdb/integrations/utilities/rag/retrievers/auto_retriever.py +117 -0
  1738. mindsdb/integrations/utilities/rag/retrievers/base.py +10 -0
  1739. mindsdb/integrations/utilities/rag/retrievers/multi_vector_retriever.py +101 -0
  1740. mindsdb/integrations/utilities/rag/retrievers/sql_retriever.py +149 -0
  1741. mindsdb/integrations/utilities/rag/settings.py +511 -0
  1742. mindsdb/integrations/utilities/rag/splitters/__init__.py +0 -0
  1743. mindsdb/integrations/utilities/rag/splitters/file_splitter.py +132 -0
  1744. mindsdb/integrations/utilities/rag/utils.py +52 -0
  1745. mindsdb/integrations/utilities/rag/vector_store.py +99 -0
  1746. mindsdb/integrations/utilities/sql_utils.py +224 -0
  1747. mindsdb/integrations/utilities/test_utils.py +30 -0
  1748. mindsdb/integrations/utilities/time_series_utils.py +191 -0
  1749. mindsdb/integrations/utilities/utils.py +32 -0
  1750. mindsdb/interfaces/__init__.py +1 -0
  1751. mindsdb/interfaces/agents/__init__.py +0 -0
  1752. mindsdb/interfaces/agents/agents_controller.py +435 -0
  1753. mindsdb/interfaces/agents/callback_handlers.py +130 -0
  1754. mindsdb/interfaces/agents/constants.py +179 -0
  1755. mindsdb/interfaces/agents/langchain_agent.py +676 -0
  1756. mindsdb/interfaces/agents/langfuse_callback_handler.py +163 -0
  1757. mindsdb/interfaces/agents/mindsdb_chat_model.py +196 -0
  1758. mindsdb/interfaces/agents/mindsdb_database_agent.py +54 -0
  1759. mindsdb/interfaces/agents/safe_output_parser.py +51 -0
  1760. mindsdb/interfaces/chatbot/__init__.py +1 -0
  1761. mindsdb/interfaces/chatbot/chatbot_controller.py +409 -0
  1762. mindsdb/interfaces/chatbot/chatbot_executor.py +226 -0
  1763. mindsdb/interfaces/chatbot/chatbot_task.py +174 -0
  1764. mindsdb/interfaces/chatbot/memory.py +223 -0
  1765. mindsdb/interfaces/chatbot/model_executor.py +107 -0
  1766. mindsdb/interfaces/chatbot/polling.py +233 -0
  1767. mindsdb/interfaces/chatbot/types.py +38 -0
  1768. mindsdb/interfaces/database/__init__.py +0 -0
  1769. mindsdb/interfaces/database/database.py +122 -0
  1770. mindsdb/interfaces/database/integrations.py +931 -0
  1771. mindsdb/interfaces/database/log.py +297 -0
  1772. mindsdb/interfaces/database/projects.py +397 -0
  1773. mindsdb/interfaces/database/views.py +139 -0
  1774. mindsdb/interfaces/file/__init__.py +0 -0
  1775. mindsdb/interfaces/file/file_controller.py +146 -0
  1776. mindsdb/interfaces/functions/__init__.py +0 -0
  1777. mindsdb/interfaces/functions/controller.py +207 -0
  1778. mindsdb/interfaces/jobs/__init__.py +0 -0
  1779. mindsdb/interfaces/jobs/jobs_controller.py +549 -0
  1780. mindsdb/interfaces/jobs/scheduler.py +143 -0
  1781. mindsdb/interfaces/knowledge_base/__init__.py +0 -0
  1782. mindsdb/interfaces/knowledge_base/controller.py +899 -0
  1783. mindsdb/interfaces/knowledge_base/preprocessing/__init__.py +0 -0
  1784. mindsdb/interfaces/knowledge_base/preprocessing/constants.py +13 -0
  1785. mindsdb/interfaces/knowledge_base/preprocessing/document_loader.py +176 -0
  1786. mindsdb/interfaces/knowledge_base/preprocessing/document_preprocessor.py +401 -0
  1787. mindsdb/interfaces/knowledge_base/preprocessing/models.py +108 -0
  1788. mindsdb/interfaces/model/__init__.py +0 -0
  1789. mindsdb/interfaces/model/functions.py +155 -0
  1790. mindsdb/interfaces/model/model_controller.py +488 -0
  1791. mindsdb/interfaces/query_context/__init__.py +0 -0
  1792. mindsdb/interfaces/query_context/context_controller.py +289 -0
  1793. mindsdb/interfaces/query_context/last_query.py +266 -0
  1794. mindsdb/interfaces/skills/__init__.py +1 -0
  1795. mindsdb/interfaces/skills/custom/__init__.py +0 -0
  1796. mindsdb/interfaces/skills/custom/text2sql/__init__.py +0 -0
  1797. mindsdb/interfaces/skills/custom/text2sql/mindsdb_sql_tool.py +37 -0
  1798. mindsdb/interfaces/skills/custom/text2sql/mindsdb_sql_toolkit.py +88 -0
  1799. mindsdb/interfaces/skills/retrieval_tool.py +110 -0
  1800. mindsdb/interfaces/skills/skill_tool.py +255 -0
  1801. mindsdb/interfaces/skills/skills_controller.py +175 -0
  1802. mindsdb/interfaces/skills/sql_agent.py +256 -0
  1803. mindsdb/interfaces/storage/__init__.py +1 -0
  1804. mindsdb/interfaces/storage/db.py +597 -0
  1805. mindsdb/interfaces/storage/fs.py +631 -0
  1806. mindsdb/interfaces/storage/json.py +97 -0
  1807. mindsdb/interfaces/storage/model_fs.py +282 -0
  1808. mindsdb/interfaces/tabs/__init__.py +0 -0
  1809. mindsdb/interfaces/tabs/tabs_controller.py +291 -0
  1810. mindsdb/interfaces/tasks/__init__.py +0 -0
  1811. mindsdb/interfaces/tasks/task.py +16 -0
  1812. mindsdb/interfaces/tasks/task_monitor.py +150 -0
  1813. mindsdb/interfaces/tasks/task_thread.py +55 -0
  1814. mindsdb/interfaces/triggers/__init__.py +0 -0
  1815. mindsdb/interfaces/triggers/trigger_task.py +95 -0
  1816. mindsdb/interfaces/triggers/triggers_controller.py +167 -0
  1817. mindsdb/metrics/__init__.py +0 -0
  1818. mindsdb/metrics/metrics.py +50 -0
  1819. mindsdb/metrics/server.py +26 -0
  1820. mindsdb/migrations/__init__.py +0 -0
  1821. mindsdb/migrations/alembic.ini +65 -0
  1822. mindsdb/migrations/env.py +87 -0
  1823. mindsdb/migrations/migrate.py +53 -0
  1824. mindsdb/migrations/versions/2021-11-30_17c3d2384711_init.py +178 -0
  1825. mindsdb/migrations/versions/2022-01-26_47f97b83cee4_views.py +38 -0
  1826. mindsdb/migrations/versions/2022-02-09_27c5aca9e47e_db_files.py +256 -0
  1827. mindsdb/migrations/versions/2022-05-25_d74c189b87e6_predictor_integration.py +156 -0
  1828. mindsdb/migrations/versions/2022-07-08_999bceb904df_integration_args.py +106 -0
  1829. mindsdb/migrations/versions/2022-07-15_b5b53e0ea7f8_training_data_rows_columns_count.py +29 -0
  1830. mindsdb/migrations/versions/2022-07-22_6e834843e7e9_training_time.py +33 -0
  1831. mindsdb/migrations/versions/2022-08-19_976f15a37e6a_predictors_versioning.py +42 -0
  1832. mindsdb/migrations/versions/2022-08-25_6a54ba55872e_view_integration.py +36 -0
  1833. mindsdb/migrations/versions/2022-08-29_473e8f239481_straighten.py +81 -0
  1834. mindsdb/migrations/versions/2022-09-06_96d5fef10caa_data_integration_id.py +69 -0
  1835. mindsdb/migrations/versions/2022-09-08_87b2df2b83e1_predictor_status.py +74 -0
  1836. mindsdb/migrations/versions/2022-09-19_3d5e70105df7_content_storage.py +59 -0
  1837. mindsdb/migrations/versions/2022-09-29_cada7d2be947_json_storage.py +90 -0
  1838. mindsdb/migrations/versions/2022-10-14_43c52d23845a_projects.py +115 -0
  1839. mindsdb/migrations/versions/2022-11-07_1e60096fc817_predictor_version.py +66 -0
  1840. mindsdb/migrations/versions/2022-11-11_d429095b570f_data_integration_id.py +106 -0
  1841. mindsdb/migrations/versions/2022-12-26_459218b0844c_fix_unique_constraint.py +34 -0
  1842. mindsdb/migrations/versions/2023-02-02_b6d0a47294ac_jobs.py +56 -0
  1843. mindsdb/migrations/versions/2023-02-17_ee63d868fa84_predictor_integration_null.py +42 -0
  1844. mindsdb/migrations/versions/2023-02-25_3154382dab17_training_progress.py +36 -0
  1845. mindsdb/migrations/versions/2023-02-27_ef04cdbe51ed_jobs_user_class.py +33 -0
  1846. mindsdb/migrations/versions/2023-04-11_b8be148dbc85_jobs_history_query.py +35 -0
  1847. mindsdb/migrations/versions/2023-05-24_6d748f2c7b0b_remove_streams.py +46 -0
  1848. mindsdb/migrations/versions/2023-05-31_aaecd7012a78_chatbot.py +41 -0
  1849. mindsdb/migrations/versions/2023-06-16_9d6271bb2c38_update_chat_bots_table.py +28 -0
  1850. mindsdb/migrations/versions/2023-06-19_b5bf593ba659_create_chat_bots_history_table.py +35 -0
  1851. mindsdb/migrations/versions/2023-06-27_607709e1615b_update_project_names.py +60 -0
  1852. mindsdb/migrations/versions/2023-07-13_a57506731839_triggers.py +54 -0
  1853. mindsdb/migrations/versions/2023-07-19_ad04ee0bd385_chatbot_to_task.py +38 -0
  1854. mindsdb/migrations/versions/2023-08-29_b0382f5be48d_predictor_hostname.py +26 -0
  1855. mindsdb/migrations/versions/2023-08-31_4c26ad04eeaa_add_skills_table.py +32 -0
  1856. mindsdb/migrations/versions/2023-09-06_d44ab65a6a35_add_agents_table.py +35 -0
  1857. mindsdb/migrations/versions/2023-09-06_e187961e844a_add_agent_skills_table.py +29 -0
  1858. mindsdb/migrations/versions/2023-09-18_011e6f2dd9c2_backfill_agent_id.py +82 -0
  1859. mindsdb/migrations/versions/2023-09-18_f16d4ab03091_add_agent_id.py +28 -0
  1860. mindsdb/migrations/versions/2023-09-20_309db3d07cf4_add_knowledge_base.py +54 -0
  1861. mindsdb/migrations/versions/2023-10-03_6cb02dfd7f61_query_context.py +38 -0
  1862. mindsdb/migrations/versions/2023-11-01_c67822e96833_jobs_active.py +33 -0
  1863. mindsdb/migrations/versions/2023-12-25_4b3c9d63e89c_predictor_index.py +44 -0
  1864. mindsdb/migrations/versions/2024-02-02_5a5c49313e52_job_condition.py +32 -0
  1865. mindsdb/migrations/versions/2024-02-12_9461892bd889_llm_log.py +44 -0
  1866. mindsdb/migrations/versions/2024-04-25_2958416fbe75_drop_semaphor.py +36 -0
  1867. mindsdb/migrations/versions/2024-06-06_cbedc4968d5d_store_llm_data.py +34 -0
  1868. mindsdb/migrations/versions/2024-07-09_bfc6f44f5bc9_agent_model_optional.py +50 -0
  1869. mindsdb/migrations/versions/2024-07-19_45eb2eb61f70_add_provider_to_agent.py +47 -0
  1870. mindsdb/migrations/versions/2024-08-12_8e17ff6b75e9_agents_deleted_at.py +42 -0
  1871. mindsdb/migrations/versions/2024-10-07_6c57ed39a82b_added_webhook_token_to_chat_bots.py +27 -0
  1872. mindsdb/migrations/versions/2024-11-15_9d559f68d535_add_llm_log_columns.py +41 -0
  1873. mindsdb/migrations/versions/2024-11-19_0f89b523f346_agent_skills_parameters.py +28 -0
  1874. mindsdb/migrations/versions/2024-11-28_a8a3fac369e7_llm_log_json_in_out.py +103 -0
  1875. mindsdb/migrations/versions/2024-11-29_f6dc924079fa_predictor_training_metadata.py +44 -0
  1876. mindsdb/migrations/versions/__init__.py +0 -0
  1877. mindsdb/utilities/__init__.py +0 -0
  1878. mindsdb/utilities/auth.py +73 -0
  1879. mindsdb/utilities/cache.py +282 -0
  1880. mindsdb/utilities/config.py +530 -0
  1881. mindsdb/utilities/context.py +57 -0
  1882. mindsdb/utilities/context_executor.py +59 -0
  1883. mindsdb/utilities/exception.py +29 -0
  1884. mindsdb/utilities/fs.py +153 -0
  1885. mindsdb/utilities/functions.py +197 -0
  1886. mindsdb/utilities/hooks/__init__.py +34 -0
  1887. mindsdb/utilities/hooks/profiling.py +74 -0
  1888. mindsdb/utilities/json_encoder.py +33 -0
  1889. mindsdb/utilities/log.py +97 -0
  1890. mindsdb/utilities/log_controller.py +39 -0
  1891. mindsdb/utilities/ml_task_queue/__init__.py +57 -0
  1892. mindsdb/utilities/ml_task_queue/base.py +14 -0
  1893. mindsdb/utilities/ml_task_queue/const.py +26 -0
  1894. mindsdb/utilities/ml_task_queue/consumer.py +252 -0
  1895. mindsdb/utilities/ml_task_queue/producer.py +81 -0
  1896. mindsdb/utilities/ml_task_queue/task.py +82 -0
  1897. mindsdb/utilities/ml_task_queue/utils.py +124 -0
  1898. mindsdb/utilities/otel.py +72 -0
  1899. mindsdb/utilities/profiler/__init__.py +19 -0
  1900. mindsdb/utilities/profiler/profiler.py +144 -0
  1901. mindsdb/utilities/ps.py +78 -0
  1902. mindsdb/utilities/render/__init__.py +0 -0
  1903. mindsdb/utilities/render/sqlalchemy_render.py +831 -0
  1904. mindsdb/utilities/security.py +54 -0
  1905. mindsdb/utilities/sentry.py +46 -0
  1906. mindsdb/utilities/telemetry.py +44 -0
  1907. mindsdb/utilities/wizards.py +49 -0
  1908. MindsDB-1.2.9.dist-info/LICENSE +0 -21
  1909. MindsDB-1.2.9.dist-info/METADATA +0 -111
  1910. MindsDB-1.2.9.dist-info/RECORD +0 -55
  1911. mindsdb/config/__init__.py +0 -32
  1912. mindsdb/config/helpers.py +0 -21
  1913. mindsdb/external_libs/stats.py +0 -61
  1914. mindsdb/libs/__init__.py +0 -6
  1915. mindsdb/libs/backends/lightwood.py +0 -113
  1916. mindsdb/libs/backends/ludwig.py +0 -507
  1917. mindsdb/libs/constants/mindsdb.py +0 -81
  1918. mindsdb/libs/controllers/predictor.py +0 -592
  1919. mindsdb/libs/controllers/transaction.py +0 -254
  1920. mindsdb/libs/data_sources/file_ds.py +0 -196
  1921. mindsdb/libs/data_types/data_source.py +0 -59
  1922. mindsdb/libs/data_types/mindsdb_logger.py +0 -127
  1923. mindsdb/libs/data_types/probability_evaluation.py +0 -56
  1924. mindsdb/libs/data_types/transaction_data.py +0 -15
  1925. mindsdb/libs/data_types/transaction_output_data.py +0 -29
  1926. mindsdb/libs/data_types/transaction_output_row.py +0 -35
  1927. mindsdb/libs/helpers/explain_prediction.py +0 -114
  1928. mindsdb/libs/helpers/file_helpers.py +0 -66
  1929. mindsdb/libs/helpers/general_helpers.py +0 -276
  1930. mindsdb/libs/helpers/multi_data_source.py +0 -28
  1931. mindsdb/libs/helpers/parser.py +0 -161
  1932. mindsdb/libs/helpers/probabilistic_validator.py +0 -198
  1933. mindsdb/libs/helpers/sqlite_helpers.py +0 -33
  1934. mindsdb/libs/helpers/text_helpers.py +0 -79
  1935. mindsdb/libs/helpers/train_helpers.py +0 -4
  1936. mindsdb/libs/phases/base_module.py +0 -62
  1937. mindsdb/libs/phases/data_extractor/data_extractor.py +0 -233
  1938. mindsdb/libs/phases/data_transformer/data_transformer.py +0 -103
  1939. mindsdb/libs/phases/model_analyzer/helpers/column_evaluator.py +0 -120
  1940. mindsdb/libs/phases/model_analyzer/model_analyzer.py +0 -119
  1941. mindsdb/libs/phases/model_interface/model_interface.py +0 -33
  1942. mindsdb/libs/phases/stats_generator/scores.py +0 -377
  1943. mindsdb/libs/phases/stats_generator/stats_generator.py +0 -694
  1944. mindsdb/scraps.py +0 -133
  1945. {MindsDB-1.2.9.dist-info → MindsDB-24.12.4.0.dist-info}/top_level.txt +0 -0
  1946. /mindsdb/{external_libs → api}/__init__.py +0 -0
  1947. /mindsdb/{libs/backends → api/common}/__init__.py +0 -0
  1948. /mindsdb/{libs/constants → api/executor/data_types}/__init__.py +0 -0
  1949. /mindsdb/{libs/controllers → api/executor/datahub/classes}/__init__.py +0 -0
  1950. /mindsdb/{libs/data_sources → api/executor/sql_query}/__init__.py +0 -0
  1951. /mindsdb/{libs/data_types → api/executor/utilities}/__init__.py +0 -0
  1952. /mindsdb/{libs/helpers → api/http}/__init__.py +0 -0
  1953. /mindsdb/{libs/phases → api/http/namespaces}/__init__.py +0 -0
  1954. /mindsdb/{libs/phases/data_extractor → api/http/namespaces/configs}/__init__.py +0 -0
  1955. /mindsdb/{libs/phases/data_transformer → api/mongo}/__init__.py +0 -0
  1956. /mindsdb/{libs/phases/model_analyzer → api/mongo/utilities}/__init__.py +0 -0
  1957. /mindsdb/{libs/phases/model_analyzer/helpers → api/mysql}/__init__.py +0 -0
  1958. /mindsdb/{libs/phases/model_interface → api/mysql/mysql_proxy}/__init__.py +0 -0
  1959. /mindsdb/{libs/phases/stats_generator → api/mysql/mysql_proxy/classes}/__init__.py +0 -0
@@ -0,0 +1,14 @@
1
+ <svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
2
+ <rect y="10" width="20" height="20" fill="url(#pattern0)"/>
3
+ <rect x="20" y="10" width="20" height="20" fill="url(#pattern1)"/>
4
+ <defs>
5
+ <pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1">
6
+ <use xlink:href="#image0_146_773" transform="scale(0.00625)"/>
7
+ </pattern>
8
+ <pattern id="pattern1" patternContentUnits="objectBoundingBox" width="1" height="1">
9
+ <use xlink:href="#image1_146_773" transform="scale(0.00625)"/>
10
+ </pattern>
11
+ <image id="image0_146_773" width="160" height="160" xlink:href="data:image/png;base64,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"/>
12
+ <image id="image1_146_773" width="160" height="160" xlink:href="data:image/png;base64,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"/>
13
+ </defs>
14
+ </svg>
@@ -0,0 +1,221 @@
1
+ import copy
2
+ import importlib
3
+ from typing import Dict, Union
4
+
5
+ import pandas as pd
6
+ from pandas import DataFrame
7
+ from pydantic import BaseModel
8
+
9
+ from mindsdb.integrations.libs.base import BaseMLEngine
10
+ from mindsdb.utilities import log
11
+ from langchain_core.embeddings import Embeddings
12
+ from mindsdb.integrations.handlers.langchain_embedding_handler.vllm_embeddings import VLLMEmbeddings
13
+
14
+ logger = log.getLogger(__name__)
15
+
16
+ # construct the embedding model name to the class mapping
17
+ # we try to import all embedding models from langchain_community.embeddings
18
+ # for each class, we get a more user friendly name for it
19
+ # E.g. OpenAIEmbeddings -> OpenAI
20
+ # This is used for the user to select the embedding model
21
+ EMBEDDING_MODELS = {
22
+ 'VLLM': 'VLLMEmbeddings',
23
+ 'vllm': 'VLLMEmbeddings'
24
+ }
25
+
26
+ try:
27
+ module = importlib.import_module("langchain_community.embeddings")
28
+ # iterate __all__ to get all the classes
29
+ for class_name in module.__all__:
30
+ class_ = getattr(module, class_name)
31
+ if not issubclass(class_, Embeddings):
32
+ continue
33
+ # convert the class name to a more user friendly name
34
+ # e.g. OpenAIEmbeddings -> OpenAI
35
+ user_friendly_name = class_name.replace("Embeddings", "")
36
+ EMBEDDING_MODELS[user_friendly_name] = class_name
37
+ EMBEDDING_MODELS[user_friendly_name.lower()] = class_name
38
+
39
+ except ImportError:
40
+ raise Exception(
41
+ "The langchain is not installed. Please install it with `pip install langchain-community`."
42
+ )
43
+
44
+
45
+ def get_langchain_class(class_name: str) -> Embeddings:
46
+ """Returns the class object of the handler class.
47
+
48
+ Args:
49
+ class_name (str): Name of the class
50
+
51
+ Returns:
52
+ langchain.embeddings.BaseEmbedding: The class object
53
+ """
54
+ # First check if it's our custom VLLMEmbeddings
55
+ if class_name == "VLLMEmbeddings":
56
+ return VLLMEmbeddings
57
+
58
+ # Then try langchain_community.embeddings
59
+ try:
60
+ module = importlib.import_module("langchain_community.embeddings")
61
+ class_ = getattr(module, class_name)
62
+ except ImportError:
63
+ raise Exception(
64
+ "The langchain is not installed. Please install it with `pip install langchain`."
65
+ )
66
+ except AttributeError:
67
+ raise Exception(
68
+ f"Could not find the class {class_name} in langchain_community.embeddings. Please check the class name."
69
+ )
70
+ return class_
71
+
72
+
73
+ def construct_model_from_args(args: Dict) -> Embeddings:
74
+ """
75
+ Deserializes the model from the model storage
76
+ """
77
+ target = args.pop("target", None)
78
+ class_name = args.pop("class", LangchainEmbeddingHandler.DEFAULT_EMBEDDING_CLASS)
79
+ if class_name in EMBEDDING_MODELS:
80
+ logger.info(
81
+ f"Mapping the user friendly name {class_name} to the class name: {EMBEDDING_MODELS[class_name]}"
82
+ )
83
+ class_name = EMBEDDING_MODELS[class_name]
84
+ MODEL_CLASS = get_langchain_class(class_name)
85
+ serialized_dict = copy.deepcopy(args)
86
+
87
+ # Make sure we don't pass in unnecessary arguments.
88
+ if issubclass(MODEL_CLASS, BaseModel):
89
+ serialized_dict = {
90
+ k: v for k, v in serialized_dict.items() if k in MODEL_CLASS.model_fields
91
+ }
92
+
93
+ model = MODEL_CLASS(**serialized_dict)
94
+ if target is not None:
95
+ args["target"] = target
96
+ args["class"] = class_name
97
+ return model
98
+
99
+
100
+ class LangchainEmbeddingHandler(BaseMLEngine):
101
+ """
102
+ Bridge class to connect langchain.embeddings module to mindsDB
103
+ """
104
+
105
+ DEFAULT_EMBEDDING_CLASS = "OpenAIEmbeddings"
106
+
107
+ def __init__(self, model_storage, engine_storage, **kwargs) -> None:
108
+ super().__init__(model_storage, engine_storage, **kwargs)
109
+ self.generative = True
110
+
111
+ def create(
112
+ self,
113
+ target: str,
114
+ df: Union[DataFrame, None] = None,
115
+ args: Union[Dict, None] = None,
116
+ ) -> None:
117
+ # get the class name from the args
118
+ user_args = args.get("using", {})
119
+
120
+ # infer the input columns arg if user did not provide it
121
+ # from the columns of the input dataframe if it is provided
122
+ if "input_columns" not in user_args and df is not None:
123
+ # ignore private columns starts with __mindsdb
124
+ # ignore target column in the input dataframe
125
+ user_args["input_columns"] = [
126
+ col
127
+ for col in df.columns.tolist()
128
+ if not col.startswith("__mindsdb") and col != target
129
+ ]
130
+ # unquote the column names -- removing surrounding `
131
+ user_args["input_columns"] = [
132
+ col.strip("`") for col in user_args["input_columns"]
133
+ ]
134
+
135
+ elif "input_columns" not in user_args:
136
+ # set as empty list if the input_columns is not provided
137
+ user_args["input_columns"] = []
138
+
139
+ # this may raise an exception if
140
+ # the arguments are not sufficient to create such as class
141
+ # due to e.g., lack of API key
142
+ # But the validation logic is handled by langchain and pydantic
143
+ construct_model_from_args(user_args)
144
+
145
+ # save the model to the model storage
146
+ target = target or "embeddings"
147
+ user_args[
148
+ "target"
149
+ ] = target # this is the name of the column to store the embeddings
150
+ self.model_storage.json_set("args", user_args)
151
+
152
+ def predict(self, df: DataFrame, args) -> DataFrame:
153
+ # reconstruct the model from the model storage
154
+ user_args = self.model_storage.json_get("args")
155
+ model = construct_model_from_args(user_args)
156
+
157
+ # get the target from the model storage
158
+ target = user_args["target"]
159
+ # run the actual embedding vector generation
160
+ # TODO: need a better way to handle this
161
+ # unquote the column names -- removing surrounding `
162
+ cols_dfs = [col.strip("`") for col in df.columns.tolist()]
163
+ df.columns = cols_dfs
164
+ # if input_columns is an empty list, use all the columns
165
+ input_columns = user_args.get("input_columns") or df.columns.tolist()
166
+ # check all the input columns are in the df
167
+ if not all(
168
+ # ignore surrounding ` in the column names when checking
169
+ [col in cols_dfs for col in input_columns]
170
+ ):
171
+ raise Exception(
172
+ f"Input columns {input_columns} not found in the input dataframe. Available columns are {df.columns}"
173
+ )
174
+
175
+ # convert each row into a document
176
+ df_texts = df[input_columns].apply(self.row_to_document, axis=1)
177
+ embeddings = model.embed_documents(df_texts.tolist())
178
+
179
+ # create a new dataframe with the embeddings
180
+ df_embeddings = df.copy().assign(**{target: embeddings})
181
+
182
+ return df_embeddings
183
+
184
+ def row_to_document(self, row: pd.Series) -> str:
185
+ """
186
+ Convert a row in the input dataframe into a document
187
+
188
+ Default implementation is to concatenate all the columns
189
+ in the form of
190
+ field1: value1\nfield2: value2\n...
191
+ """
192
+ fields = row.index.tolist()
193
+ values = row.values.tolist()
194
+ document = "\n".join(
195
+ [f"{field}: {value}" for field, value in zip(fields, values)]
196
+ )
197
+ return document
198
+
199
+ def finetune(
200
+ self, df: Union[DataFrame, None] = None, args: Union[Dict, None] = None
201
+ ) -> None:
202
+ raise NotImplementedError(
203
+ "Finetuning is not supported for langchain embeddings"
204
+ )
205
+
206
+ def describe(self, attribute: Union[str, None] = None) -> DataFrame:
207
+ args = self.model_storage.json_get("args")
208
+
209
+ if attribute == "args":
210
+ return pd.DataFrame(args.items(), columns=["key", "value"])
211
+ elif attribute == "metadata":
212
+ return pd.DataFrame(
213
+ [
214
+ ("model_class", self.model_storage.json_get("model_class")),
215
+ ],
216
+ columns=["key", "value"],
217
+ )
218
+
219
+ else:
220
+ tables = ("args", "metadata")
221
+ return pd.DataFrame(tables, columns=["tables"])
@@ -0,0 +1,2 @@
1
+ openai==1.55.3
2
+ tiktoken
@@ -0,0 +1,111 @@
1
+ from typing import Any, List
2
+ from langchain_core.embeddings import Embeddings
3
+ from openai import AsyncOpenAI
4
+ import asyncio
5
+
6
+
7
+ class VLLMEmbeddings(Embeddings):
8
+ """VLLMEmbeddings uses a VLLM server to generate embeddings."""
9
+
10
+ def __init__(
11
+ self,
12
+ openai_api_base: str,
13
+ model: str,
14
+ batch_size: int = 32,
15
+ **kwargs: Any,
16
+ ):
17
+ """Initialize the embeddings class.
18
+
19
+ Args:
20
+ openai_api_base: Base URL for the VLLM server
21
+ model: Model name/path to use for embeddings
22
+ batch_size: Batch size for generating embeddings
23
+ """
24
+ super().__init__()
25
+ self.model = model
26
+ self.batch_size = batch_size
27
+ self.is_nomic = "nomic-embed-text" in model.lower()
28
+
29
+ # Initialize OpenAI client
30
+ openai_kwargs = kwargs.copy()
31
+ if "input_columns" in openai_kwargs:
32
+ del openai_kwargs["input_columns"]
33
+
34
+ self.client = AsyncOpenAI(
35
+ api_key="EMPTY", # vLLM doesn't need an API key
36
+ base_url=openai_api_base,
37
+ **openai_kwargs,
38
+ )
39
+
40
+ def _format_text(self, text: str, is_query: bool = False) -> str:
41
+ """
42
+ Format text according to nomic-embed requirements if using nomic model.
43
+ e.g. see here for more details: https://huggingface.co/nomic-ai/nomic-embed-text-v1.5#task-instruction-prefixes
44
+ """
45
+
46
+ if not self.is_nomic:
47
+ return text
48
+ prefix = "search_query: " if is_query else "search_document: "
49
+ return prefix + text
50
+
51
+ def _get_embeddings(self, texts: List[str]) -> List[List[float]]:
52
+ """Get embeddings for a batch of texts."""
53
+
54
+ async def await_openai_call(batch):
55
+ return await self.client.embeddings.create(model=self.model, input=batch)
56
+
57
+ embeddings = []
58
+ embedding_coroutines = []
59
+ chunk_start_indices = range(0, len(texts), self.batch_size)
60
+ for i in chunk_start_indices:
61
+
62
+ batch = texts[i: i + self.batch_size]
63
+ embedding_coroutines.append(await_openai_call(batch))
64
+
65
+ # if at max-concurrency, then run with gather
66
+ if len(embedding_coroutines) == 512 or len(embedding_coroutines) == len(
67
+ chunk_start_indices
68
+ ):
69
+
70
+ openai_responses = []
71
+
72
+ async def gather_coroutines(openai_responses):
73
+ # define a function to gather and save responses.
74
+ intermediate = await asyncio.gather(*embedding_coroutines)
75
+ openai_responses.extend(intermediate)
76
+
77
+ # run asynchronously
78
+ asyncio.run(gather_coroutines(openai_responses))
79
+
80
+ # extract embeddings from responses
81
+ for response in openai_responses:
82
+ embeddings.extend([data.embedding for data in response.data])
83
+
84
+ # reset the embedding_coroutines list
85
+ embedding_coroutines = []
86
+
87
+ return embeddings
88
+
89
+ def embed_documents(self, texts: List[str]) -> List[List[float]]:
90
+ """Embed a list of documents using vLLM.
91
+
92
+ Args:
93
+ texts: List of documents to embed
94
+
95
+ Returns:
96
+ List of embeddings, one for each document
97
+ """
98
+ formatted_texts = [self._format_text(text) for text in texts]
99
+ return self._get_embeddings(formatted_texts)
100
+
101
+ def embed_query(self, text: str) -> List[float]:
102
+ """Embed a single query text using vLLM.
103
+
104
+ Args:
105
+ text: Query text to embed
106
+
107
+ Returns:
108
+ Query embedding
109
+ """
110
+ formatted_text = self._format_text(text, is_query=True)
111
+ return self._get_embeddings([formatted_text])[0]
@@ -0,0 +1,9 @@
1
+ __title__ = 'MindsDB LangChain handler'
2
+ __package_name__ = 'mindsdb_langchain_handler'
3
+ __version__ = '0.0.1'
4
+ __description__ = "MindsDB handler for LangChain"
5
+ __author__ = 'MindsDB Inc'
6
+ __github__ = 'https://github.com/mindsdb/mindsdb'
7
+ __pypi__ = 'https://pypi.org/project/mindsdb/'
8
+ __license__ = 'MIT'
9
+ __copyright__ = 'Copyright 2023- mindsdb'
@@ -0,0 +1,19 @@
1
+ from mindsdb.integrations.libs.const import HANDLER_TYPE
2
+
3
+ from .__about__ import __version__ as version, __description__ as description
4
+ try:
5
+ from .langchain_handler import LangChainHandler as Handler
6
+ import_error = None
7
+ except Exception as e:
8
+ Handler = None
9
+ import_error = e
10
+
11
+ title = 'LangChain'
12
+ name = 'langchain'
13
+ type = HANDLER_TYPE.ML
14
+ icon_path = 'icon.svg'
15
+ permanent = False
16
+
17
+ __all__ = [
18
+ 'Handler', 'version', 'name', 'type', 'title', 'description', 'import_error', 'icon_path'
19
+ ]