MindsDB 25.4.5.0__py3-none-any.whl → 25.5.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 (350) hide show
  1. mindsdb/__about__.py +1 -1
  2. mindsdb/__main__.py +215 -185
  3. mindsdb/api/a2a/__init__.py +0 -0
  4. mindsdb/api/a2a/__main__.py +114 -0
  5. mindsdb/api/a2a/a2a_client.py +439 -0
  6. mindsdb/api/a2a/agent.py +308 -0
  7. mindsdb/api/a2a/common/__init__.py +0 -0
  8. mindsdb/api/a2a/common/client/__init__.py +4 -0
  9. mindsdb/api/a2a/common/client/card_resolver.py +21 -0
  10. mindsdb/api/a2a/common/client/client.py +86 -0
  11. mindsdb/api/a2a/common/server/__init__.py +4 -0
  12. mindsdb/api/a2a/common/server/server.py +164 -0
  13. mindsdb/api/a2a/common/server/task_manager.py +287 -0
  14. mindsdb/api/a2a/common/server/utils.py +28 -0
  15. mindsdb/api/a2a/common/types.py +365 -0
  16. mindsdb/api/a2a/constants.py +9 -0
  17. mindsdb/api/a2a/run_a2a.py +129 -0
  18. mindsdb/api/a2a/task_manager.py +594 -0
  19. mindsdb/api/executor/command_executor.py +49 -28
  20. mindsdb/api/executor/datahub/classes/response.py +5 -2
  21. mindsdb/api/executor/datahub/datanodes/information_schema_datanode.py +8 -0
  22. mindsdb/api/executor/datahub/datanodes/integration_datanode.py +39 -72
  23. mindsdb/api/executor/datahub/datanodes/system_tables.py +10 -13
  24. mindsdb/api/executor/planner/query_planner.py +14 -2
  25. mindsdb/api/executor/sql_query/result_set.py +185 -52
  26. mindsdb/api/executor/sql_query/sql_query.py +1 -1
  27. mindsdb/api/executor/sql_query/steps/apply_predictor_step.py +11 -13
  28. mindsdb/api/executor/sql_query/steps/fetch_dataframe.py +8 -10
  29. mindsdb/api/executor/sql_query/steps/fetch_dataframe_partition.py +5 -44
  30. mindsdb/api/executor/sql_query/steps/insert_step.py +24 -15
  31. mindsdb/api/executor/sql_query/steps/join_step.py +1 -1
  32. mindsdb/api/executor/sql_query/steps/project_step.py +1 -1
  33. mindsdb/api/executor/sql_query/steps/sql_steps.py +1 -1
  34. mindsdb/api/executor/sql_query/steps/subselect_step.py +4 -8
  35. mindsdb/api/executor/sql_query/steps/union_step.py +1 -3
  36. mindsdb/api/http/initialize.py +118 -85
  37. mindsdb/api/http/namespaces/analysis.py +17 -4
  38. mindsdb/api/http/namespaces/file.py +8 -2
  39. mindsdb/api/http/namespaces/sql.py +13 -27
  40. mindsdb/api/http/namespaces/tree.py +1 -1
  41. mindsdb/api/http/start.py +7 -2
  42. mindsdb/api/mcp/start.py +42 -5
  43. mindsdb/api/mysql/mysql_proxy/data_types/mysql_packet.py +0 -1
  44. mindsdb/api/mysql/mysql_proxy/data_types/mysql_packets/binary_resultset_row_package.py +52 -19
  45. mindsdb/api/mysql/mysql_proxy/executor/mysql_executor.py +8 -10
  46. mindsdb/api/mysql/mysql_proxy/libs/constants/mysql.py +54 -38
  47. mindsdb/api/mysql/mysql_proxy/mysql_proxy.py +86 -123
  48. mindsdb/api/mysql/mysql_proxy/utilities/dump.py +351 -0
  49. mindsdb/api/mysql/mysql_proxy/utilities/exceptions.py +0 -4
  50. mindsdb/api/postgres/postgres_proxy/executor/executor.py +1 -1
  51. mindsdb/api/postgres/postgres_proxy/postgres_packets/postgres_message_formats.py +2 -2
  52. mindsdb/api/postgres/postgres_proxy/postgres_proxy.py +5 -6
  53. mindsdb/integrations/handlers/altibase_handler/altibase_handler.py +26 -27
  54. mindsdb/integrations/handlers/altibase_handler/connection_args.py +13 -13
  55. mindsdb/integrations/handlers/altibase_handler/tests/test_altibase_handler.py +8 -8
  56. mindsdb/integrations/handlers/altibase_handler/tests/test_altibase_handler_dsn.py +13 -13
  57. mindsdb/integrations/handlers/anthropic_handler/__init__.py +2 -2
  58. mindsdb/integrations/handlers/anthropic_handler/anthropic_handler.py +1 -3
  59. mindsdb/integrations/handlers/aurora_handler/aurora_handler.py +1 -0
  60. mindsdb/integrations/handlers/autosklearn_handler/autosklearn_handler.py +1 -1
  61. mindsdb/integrations/handlers/autosklearn_handler/config.py +0 -1
  62. mindsdb/integrations/handlers/bigquery_handler/bigquery_handler.py +1 -1
  63. mindsdb/integrations/handlers/bigquery_handler/requirements.txt +1 -0
  64. mindsdb/integrations/handlers/bigquery_handler/tests/test_bigquery_handler.py +1 -1
  65. mindsdb/integrations/handlers/binance_handler/binance_handler.py +1 -0
  66. mindsdb/integrations/handlers/binance_handler/binance_tables.py +3 -4
  67. mindsdb/integrations/handlers/byom_handler/__init__.py +0 -1
  68. mindsdb/integrations/handlers/chromadb_handler/requirements.txt +1 -0
  69. mindsdb/integrations/handlers/ckan_handler/ckan_handler.py +3 -0
  70. mindsdb/integrations/handlers/clickhouse_handler/__init__.py +1 -1
  71. mindsdb/integrations/handlers/cloud_spanner_handler/tests/test_cloud_spanner_handler.py +0 -2
  72. mindsdb/integrations/handlers/cloud_sql_handler/cloud_sql_handler.py +0 -1
  73. mindsdb/integrations/handlers/cohere_handler/__init__.py +1 -1
  74. mindsdb/integrations/handlers/cohere_handler/cohere_handler.py +11 -13
  75. mindsdb/integrations/handlers/confluence_handler/confluence_tables.py +6 -0
  76. mindsdb/integrations/handlers/databend_handler/connection_args.py +1 -1
  77. mindsdb/integrations/handlers/databend_handler/databend_handler.py +4 -4
  78. mindsdb/integrations/handlers/databend_handler/tests/__init__.py +0 -1
  79. mindsdb/integrations/handlers/databend_handler/tests/test_databend_handler.py +1 -1
  80. mindsdb/integrations/handlers/derby_handler/connection_args.py +1 -1
  81. mindsdb/integrations/handlers/derby_handler/derby_handler.py +14 -22
  82. mindsdb/integrations/handlers/derby_handler/tests/test_derby_handler.py +6 -6
  83. mindsdb/integrations/handlers/discord_handler/discord_handler.py +5 -5
  84. mindsdb/integrations/handlers/discord_handler/discord_tables.py +3 -3
  85. mindsdb/integrations/handlers/discord_handler/tests/test_discord.py +5 -3
  86. mindsdb/integrations/handlers/dockerhub_handler/dockerhub.py +3 -3
  87. mindsdb/integrations/handlers/dockerhub_handler/dockerhub_handler.py +2 -2
  88. mindsdb/integrations/handlers/dockerhub_handler/dockerhub_tables.py +57 -54
  89. mindsdb/integrations/handlers/dremio_handler/__init__.py +2 -2
  90. mindsdb/integrations/handlers/druid_handler/__init__.py +1 -1
  91. mindsdb/integrations/handlers/druid_handler/druid_handler.py +2 -2
  92. mindsdb/integrations/handlers/edgelessdb_handler/tests/test_edgelessdb_handler.py +9 -9
  93. mindsdb/integrations/handlers/email_handler/email_client.py +1 -1
  94. mindsdb/integrations/handlers/email_handler/email_ingestor.py +1 -1
  95. mindsdb/integrations/handlers/email_handler/email_tables.py +0 -1
  96. mindsdb/integrations/handlers/email_handler/settings.py +0 -1
  97. mindsdb/integrations/handlers/eventstoredb_handler/eventstoredb_handler.py +2 -1
  98. mindsdb/integrations/handlers/firebird_handler/firebird_handler.py +1 -1
  99. mindsdb/integrations/handlers/flaml_handler/flaml_handler.py +9 -9
  100. mindsdb/integrations/handlers/frappe_handler/frappe_client.py +5 -5
  101. mindsdb/integrations/handlers/frappe_handler/frappe_handler.py +6 -5
  102. mindsdb/integrations/handlers/frappe_handler/frappe_tables.py +2 -2
  103. mindsdb/integrations/handlers/github_handler/connection_args.py +2 -2
  104. mindsdb/integrations/handlers/github_handler/github_handler.py +1 -8
  105. mindsdb/integrations/handlers/github_handler/github_tables.py +13 -24
  106. mindsdb/integrations/handlers/gitlab_handler/gitlab_handler.py +2 -1
  107. mindsdb/integrations/handlers/gitlab_handler/gitlab_tables.py +1 -4
  108. mindsdb/integrations/handlers/gmail_handler/gmail_handler.py +6 -13
  109. mindsdb/integrations/handlers/gmail_handler/requirements.txt +1 -0
  110. mindsdb/integrations/handlers/google_analytics_handler/requirements.txt +2 -1
  111. mindsdb/integrations/handlers/google_books_handler/google_books_handler.py +2 -1
  112. mindsdb/integrations/handlers/google_books_handler/google_books_tables.py +0 -3
  113. mindsdb/integrations/handlers/google_books_handler/requirements.txt +1 -1
  114. mindsdb/integrations/handlers/google_calendar_handler/google_calendar_handler.py +4 -4
  115. mindsdb/integrations/handlers/google_calendar_handler/google_calendar_tables.py +2 -6
  116. mindsdb/integrations/handlers/google_calendar_handler/requirements.txt +1 -0
  117. mindsdb/integrations/handlers/google_content_shopping_handler/google_content_shopping_handler.py +3 -2
  118. mindsdb/integrations/handlers/google_content_shopping_handler/google_content_shopping_tables.py +0 -3
  119. mindsdb/integrations/handlers/google_content_shopping_handler/requirements.txt +1 -1
  120. mindsdb/integrations/handlers/google_fit_handler/google_fit_handler.py +10 -12
  121. mindsdb/integrations/handlers/google_fit_handler/google_fit_tables.py +11 -13
  122. mindsdb/integrations/handlers/google_fit_handler/requirements.txt +2 -0
  123. mindsdb/integrations/handlers/google_search_handler/google_search_handler.py +2 -1
  124. mindsdb/integrations/handlers/google_search_handler/google_search_tables.py +0 -3
  125. mindsdb/integrations/handlers/google_search_handler/requirements.txt +1 -1
  126. mindsdb/integrations/handlers/groq_handler/__init__.py +3 -3
  127. mindsdb/integrations/handlers/hackernews_handler/hn_handler.py +5 -7
  128. mindsdb/integrations/handlers/hackernews_handler/hn_table.py +6 -7
  129. mindsdb/integrations/handlers/hive_handler/tests/test_hive_handler.py +1 -1
  130. mindsdb/integrations/handlers/hsqldb_handler/connection_args.py +6 -6
  131. mindsdb/integrations/handlers/hsqldb_handler/hsqldb_handler.py +4 -3
  132. mindsdb/integrations/handlers/huggingface_api_handler/exceptions.py +1 -1
  133. mindsdb/integrations/handlers/huggingface_api_handler/huggingface_api_handler.py +1 -8
  134. mindsdb/integrations/handlers/huggingface_handler/huggingface_handler.py +6 -6
  135. mindsdb/integrations/handlers/huggingface_handler/requirements.txt +1 -1
  136. mindsdb/integrations/handlers/huggingface_handler/requirements_cpu.txt +1 -1
  137. mindsdb/integrations/handlers/ignite_handler/ignite_handler.py +2 -1
  138. mindsdb/integrations/handlers/impala_handler/impala_handler.py +9 -12
  139. mindsdb/integrations/handlers/impala_handler/tests/test_impala_handler.py +11 -11
  140. mindsdb/integrations/handlers/influxdb_handler/influxdb_handler.py +10 -13
  141. mindsdb/integrations/handlers/influxdb_handler/influxdb_tables.py +20 -20
  142. mindsdb/integrations/handlers/informix_handler/__about__.py +8 -8
  143. mindsdb/integrations/handlers/informix_handler/__init__.py +12 -5
  144. mindsdb/integrations/handlers/informix_handler/informix_handler.py +99 -133
  145. mindsdb/integrations/handlers/informix_handler/tests/test_informix_handler.py +13 -11
  146. mindsdb/integrations/handlers/ingres_handler/__about__.py +0 -1
  147. mindsdb/integrations/handlers/ingres_handler/ingres_handler.py +1 -0
  148. mindsdb/integrations/handlers/jira_handler/jira_handler.archived.py +75 -0
  149. mindsdb/integrations/handlers/jira_handler/jira_handler.py +113 -38
  150. mindsdb/integrations/handlers/jira_handler/jira_tables.py +229 -0
  151. mindsdb/integrations/handlers/jira_handler/requirements.txt +1 -0
  152. mindsdb/integrations/handlers/kinetica_handler/__init__.py +0 -1
  153. mindsdb/integrations/handlers/langchain_handler/langchain_handler.py +4 -4
  154. mindsdb/integrations/handlers/langchain_handler/tools.py +9 -10
  155. mindsdb/integrations/handlers/leonardoai_handler/__init__.py +1 -1
  156. mindsdb/integrations/handlers/lightfm_handler/requirements.txt +1 -0
  157. mindsdb/integrations/handlers/lightwood_handler/functions.py +2 -2
  158. mindsdb/integrations/handlers/lightwood_handler/lightwood_handler.py +0 -3
  159. mindsdb/integrations/handlers/lightwood_handler/requirements.txt +4 -4
  160. mindsdb/integrations/handlers/lightwood_handler/tests/test_lightwood_handler.py +11 -11
  161. mindsdb/integrations/handlers/lindorm_handler/requirements.txt +1 -0
  162. mindsdb/integrations/handlers/llama_index_handler/llama_index_handler.py +4 -4
  163. mindsdb/integrations/handlers/llama_index_handler/settings.py +10 -9
  164. mindsdb/integrations/handlers/materialize_handler/tests/test_materialize_handler.py +8 -10
  165. mindsdb/integrations/handlers/matrixone_handler/matrixone_handler.py +4 -4
  166. mindsdb/integrations/handlers/matrixone_handler/tests/test_matrixone_handler.py +8 -9
  167. mindsdb/integrations/handlers/maxdb_handler/connection_args.py +25 -25
  168. mindsdb/integrations/handlers/maxdb_handler/maxdb_handler.py +1 -0
  169. mindsdb/integrations/handlers/mediawiki_handler/mediawiki_handler.py +3 -2
  170. mindsdb/integrations/handlers/mediawiki_handler/mediawiki_tables.py +1 -1
  171. mindsdb/integrations/handlers/mendeley_handler/__about__.py +1 -1
  172. mindsdb/integrations/handlers/mendeley_handler/__init__.py +2 -2
  173. mindsdb/integrations/handlers/mendeley_handler/mendeley_handler.py +48 -56
  174. mindsdb/integrations/handlers/mendeley_handler/mendeley_tables.py +24 -29
  175. mindsdb/integrations/handlers/mendeley_handler/tests/test_mendeley_handler.py +19 -17
  176. mindsdb/integrations/handlers/merlion_handler/merlion_handler.py +5 -4
  177. mindsdb/integrations/handlers/minds_endpoint_handler/__init__.py +3 -3
  178. mindsdb/integrations/handlers/mlflow_handler/mlflow_handler.py +58 -36
  179. mindsdb/integrations/handlers/monetdb_handler/__about__.py +8 -8
  180. mindsdb/integrations/handlers/monetdb_handler/__init__.py +15 -5
  181. mindsdb/integrations/handlers/monetdb_handler/connection_args.py +17 -18
  182. mindsdb/integrations/handlers/monetdb_handler/monetdb_handler.py +40 -57
  183. mindsdb/integrations/handlers/monetdb_handler/tests/test_monetdb_handler.py +7 -8
  184. mindsdb/integrations/handlers/monetdb_handler/utils/monet_get_id.py +13 -14
  185. mindsdb/integrations/handlers/monkeylearn_handler/__about__.py +1 -1
  186. mindsdb/integrations/handlers/monkeylearn_handler/__init__.py +1 -1
  187. mindsdb/integrations/handlers/monkeylearn_handler/monkeylearn_handler.py +2 -5
  188. mindsdb/integrations/handlers/ms_one_drive_handler/ms_graph_api_one_drive_client.py +1 -0
  189. mindsdb/integrations/handlers/ms_one_drive_handler/ms_one_drive_handler.py +1 -1
  190. mindsdb/integrations/handlers/ms_one_drive_handler/requirements.txt +2 -0
  191. mindsdb/integrations/handlers/ms_teams_handler/ms_graph_api_teams_client.py +23 -23
  192. mindsdb/integrations/handlers/ms_teams_handler/ms_teams_handler.py +3 -3
  193. mindsdb/integrations/handlers/ms_teams_handler/ms_teams_tables.py +10 -5
  194. mindsdb/integrations/handlers/ms_teams_handler/requirements.txt +3 -1
  195. mindsdb/integrations/handlers/mssql_handler/mssql_handler.py +73 -8
  196. mindsdb/integrations/handlers/mysql_handler/__about__.py +8 -8
  197. mindsdb/integrations/handlers/mysql_handler/__init__.py +15 -5
  198. mindsdb/integrations/handlers/mysql_handler/connection_args.py +43 -47
  199. mindsdb/integrations/handlers/mysql_handler/mysql_handler.py +101 -34
  200. mindsdb/integrations/handlers/mysql_handler/settings.py +15 -13
  201. mindsdb/integrations/handlers/neuralforecast_handler/neuralforecast_handler.py +1 -1
  202. mindsdb/integrations/handlers/newsapi_handler/newsapi_handler.py +1 -1
  203. mindsdb/integrations/handlers/newsapi_handler/tests/test_newsapi_handler.py +4 -4
  204. mindsdb/integrations/handlers/nuo_jdbc_handler/connection_args.py +2 -2
  205. mindsdb/integrations/handlers/nuo_jdbc_handler/nuo_jdbc_handler.py +28 -36
  206. mindsdb/integrations/handlers/nuo_jdbc_handler/tests/test_nuo_handler.py +5 -5
  207. mindsdb/integrations/handlers/oceanbase_handler/oceanbase_handler.py +0 -1
  208. mindsdb/integrations/handlers/oceanbase_handler/tests/test_oceanbase_handler.py +8 -10
  209. mindsdb/integrations/handlers/ollama_handler/ollama_handler.py +3 -3
  210. mindsdb/integrations/handlers/openai_handler/openai_handler.py +5 -4
  211. mindsdb/integrations/handlers/opengauss_handler/tests/test_opengauss_handler.py +1 -2
  212. mindsdb/integrations/handlers/openstreetmap_handler/__init__.py +7 -7
  213. mindsdb/integrations/handlers/oracle_handler/connection_args.py +6 -0
  214. mindsdb/integrations/handlers/oracle_handler/oracle_handler.py +77 -11
  215. mindsdb/integrations/handlers/orioledb_handler/tests/test_orioledb_handler.py +8 -10
  216. mindsdb/integrations/handlers/palm_handler/__about__.py +1 -1
  217. mindsdb/integrations/handlers/palm_handler/__init__.py +1 -1
  218. mindsdb/integrations/handlers/palm_handler/palm_handler.py +1 -3
  219. mindsdb/integrations/handlers/paypal_handler/paypal_handler.py +2 -2
  220. mindsdb/integrations/handlers/paypal_handler/paypal_tables.py +15 -14
  221. mindsdb/integrations/handlers/pgvector_handler/pgvector_handler.py +53 -10
  222. mindsdb/integrations/handlers/phoenix_handler/__init__.py +1 -1
  223. mindsdb/integrations/handlers/phoenix_handler/phoenix_handler.py +1 -0
  224. mindsdb/integrations/handlers/pinot_handler/__init__.py +1 -1
  225. mindsdb/integrations/handlers/pinot_handler/pinot_handler.py +3 -2
  226. mindsdb/integrations/handlers/plaid_handler/plaid_handler.py +13 -13
  227. mindsdb/integrations/handlers/plaid_handler/plaid_tables.py +10 -12
  228. mindsdb/integrations/handlers/plaid_handler/utils.py +4 -6
  229. mindsdb/integrations/handlers/planetscale_handler/planetscale_handler.py +1 -4
  230. mindsdb/integrations/handlers/portkey_handler/__init__.py +2 -2
  231. mindsdb/integrations/handlers/postgres_handler/postgres_handler.py +105 -24
  232. mindsdb/integrations/handlers/postgres_handler/tests/test_postgres_handler.py +11 -6
  233. mindsdb/integrations/handlers/questdb_handler/questdb_handler.py +1 -2
  234. mindsdb/integrations/handlers/questdb_handler/tests/test_questdb_handler.py +2 -3
  235. mindsdb/integrations/handlers/quickbooks_handler/quickbooks_handler.py +6 -8
  236. mindsdb/integrations/handlers/quickbooks_handler/quickbooks_table.py +10 -10
  237. mindsdb/integrations/handlers/rag_handler/ingest.py +2 -2
  238. mindsdb/integrations/handlers/rag_handler/rag_handler.py +1 -1
  239. mindsdb/integrations/handlers/rag_handler/settings.py +1 -1
  240. mindsdb/integrations/handlers/reddit_handler/reddit_handler.py +2 -7
  241. mindsdb/integrations/handlers/reddit_handler/reddit_tables.py +2 -3
  242. mindsdb/integrations/handlers/replicate_handler/replicate_handler.py +6 -6
  243. mindsdb/integrations/handlers/rocket_chat_handler/rocket_chat_handler.py +1 -2
  244. mindsdb/integrations/handlers/rocket_chat_handler/rocket_chat_tables.py +0 -3
  245. mindsdb/integrations/handlers/rockset_handler/connection_args.py +14 -14
  246. mindsdb/integrations/handlers/rockset_handler/tests/test_rockset_handler.py +1 -0
  247. mindsdb/integrations/handlers/scylla_handler/scylla_handler.py +6 -5
  248. mindsdb/integrations/handlers/sendinblue_handler/sendinblue_handler.py +2 -1
  249. mindsdb/integrations/handlers/sendinblue_handler/sendinblue_tables.py +16 -16
  250. mindsdb/integrations/handlers/sentence_transformers_handler/__init__.py +1 -1
  251. mindsdb/integrations/handlers/sheets_handler/connection_args.py +1 -1
  252. mindsdb/integrations/handlers/shopify_handler/shopify_handler.py +7 -6
  253. mindsdb/integrations/handlers/shopify_handler/shopify_tables.py +38 -41
  254. mindsdb/integrations/handlers/singlestore_handler/__about__.py +1 -1
  255. mindsdb/integrations/handlers/singlestore_handler/__init__.py +0 -1
  256. mindsdb/integrations/handlers/singlestore_handler/singlestore_handler.py +1 -0
  257. mindsdb/integrations/handlers/singlestore_handler/tests/test_singlestore_handler.py +3 -3
  258. mindsdb/integrations/handlers/slack_handler/__init__.py +3 -3
  259. mindsdb/integrations/handlers/snowflake_handler/requirements.txt +1 -1
  260. mindsdb/integrations/handlers/snowflake_handler/snowflake_handler.py +100 -6
  261. mindsdb/integrations/handlers/solr_handler/connection_args.py +7 -7
  262. mindsdb/integrations/handlers/solr_handler/solr_handler.py +2 -1
  263. mindsdb/integrations/handlers/solr_handler/tests/test_solr_handler.py +2 -1
  264. mindsdb/integrations/handlers/sqlany_handler/sqlany_handler.py +3 -2
  265. mindsdb/integrations/handlers/sqlite_handler/sqlite_handler.py +1 -0
  266. mindsdb/integrations/handlers/sqreamdb_handler/connection_args.py +1 -1
  267. mindsdb/integrations/handlers/sqreamdb_handler/sqreamdb_handler.py +15 -20
  268. mindsdb/integrations/handlers/sqreamdb_handler/tests/test_sqreamdb_handler.py +4 -4
  269. mindsdb/integrations/handlers/stabilityai_handler/__init__.py +1 -1
  270. mindsdb/integrations/handlers/starrocks_handler/starrocks_handler.py +0 -1
  271. mindsdb/integrations/handlers/starrocks_handler/tests/test_starrocks_handler.py +8 -10
  272. mindsdb/integrations/handlers/statsforecast_handler/statsforecast_handler.py +2 -2
  273. mindsdb/integrations/handlers/strava_handler/strava_handler.py +4 -8
  274. mindsdb/integrations/handlers/strava_handler/strava_tables.py +22 -30
  275. mindsdb/integrations/handlers/stripe_handler/stripe_handler.py +3 -2
  276. mindsdb/integrations/handlers/stripe_handler/stripe_tables.py +11 -27
  277. mindsdb/integrations/handlers/supabase_handler/tests/test_supabase_handler.py +1 -1
  278. mindsdb/integrations/handlers/surrealdb_handler/surrealdb_handler.py +4 -4
  279. mindsdb/integrations/handlers/tdengine_handler/tdengine_handler.py +25 -27
  280. mindsdb/integrations/handlers/tdengine_handler/tests/test_tdengine_handler.py +8 -8
  281. mindsdb/integrations/handlers/tidb_handler/tests/test_tidb_handler.py +1 -2
  282. mindsdb/integrations/handlers/timegpt_handler/timegpt_handler.py +5 -5
  283. mindsdb/integrations/handlers/tpot_handler/tpot_handler.py +21 -26
  284. mindsdb/integrations/handlers/trino_handler/trino_handler.py +14 -14
  285. mindsdb/integrations/handlers/twitter_handler/twitter_handler.py +2 -4
  286. mindsdb/integrations/handlers/unify_handler/tests/test_unify_handler.py +7 -8
  287. mindsdb/integrations/handlers/unify_handler/unify_handler.py +9 -9
  288. mindsdb/integrations/handlers/vertex_handler/requirements.txt +1 -0
  289. mindsdb/integrations/handlers/vertex_handler/vertex_client.py +1 -1
  290. mindsdb/integrations/handlers/vertica_handler/tests/test_vertica_handler.py +11 -11
  291. mindsdb/integrations/handlers/vertica_handler/vertica_handler.py +11 -14
  292. mindsdb/integrations/handlers/vitess_handler/tests/test_vitess_handler.py +9 -11
  293. mindsdb/integrations/handlers/vitess_handler/vitess_handler.py +0 -1
  294. mindsdb/integrations/handlers/web_handler/web_handler.py +1 -0
  295. mindsdb/integrations/handlers/whatsapp_handler/__init__.py +3 -3
  296. mindsdb/integrations/handlers/writer_handler/evaluate.py +1 -1
  297. mindsdb/integrations/handlers/writer_handler/settings.py +0 -1
  298. mindsdb/integrations/handlers/writer_handler/writer_handler.py +1 -0
  299. mindsdb/integrations/handlers/youtube_handler/requirements.txt +1 -0
  300. mindsdb/integrations/handlers/youtube_handler/youtube_handler.py +5 -5
  301. mindsdb/integrations/handlers/youtube_handler/youtube_tables.py +26 -27
  302. mindsdb/integrations/handlers/yugabyte_handler/tests/test_yugabyte_handler.py +3 -3
  303. mindsdb/integrations/handlers/yugabyte_handler/yugabyte_handler.py +0 -6
  304. mindsdb/integrations/libs/response.py +67 -52
  305. mindsdb/integrations/libs/vectordatabase_handler.py +6 -0
  306. mindsdb/integrations/utilities/files/file_reader.py +5 -2
  307. mindsdb/integrations/utilities/handler_utils.py +15 -3
  308. mindsdb/integrations/utilities/handlers/api_utilities/__init__.py +0 -1
  309. mindsdb/integrations/utilities/handlers/auth_utilities/__init__.py +0 -2
  310. mindsdb/integrations/utilities/utils.py +3 -3
  311. mindsdb/interfaces/agents/agents_controller.py +164 -1
  312. mindsdb/interfaces/agents/constants.py +29 -2
  313. mindsdb/interfaces/agents/langchain_agent.py +18 -8
  314. mindsdb/interfaces/agents/mindsdb_database_agent.py +101 -2
  315. mindsdb/interfaces/database/projects.py +1 -7
  316. mindsdb/interfaces/functions/controller.py +11 -14
  317. mindsdb/interfaces/functions/to_markdown.py +9 -124
  318. mindsdb/interfaces/knowledge_base/controller.py +47 -19
  319. mindsdb/interfaces/knowledge_base/preprocessing/document_preprocessor.py +41 -15
  320. mindsdb/interfaces/knowledge_base/preprocessing/json_chunker.py +434 -0
  321. mindsdb/interfaces/knowledge_base/preprocessing/models.py +54 -0
  322. mindsdb/interfaces/knowledge_base/utils.py +10 -15
  323. mindsdb/interfaces/model/model_controller.py +0 -2
  324. mindsdb/interfaces/query_context/context_controller.py +66 -10
  325. mindsdb/interfaces/skills/custom/text2sql/mindsdb_kb_tools.py +190 -0
  326. mindsdb/interfaces/skills/custom/text2sql/mindsdb_sql_toolkit.py +92 -0
  327. mindsdb/interfaces/skills/skill_tool.py +202 -57
  328. mindsdb/interfaces/skills/sql_agent.py +238 -28
  329. mindsdb/interfaces/storage/fs.py +1 -0
  330. mindsdb/interfaces/variables/__init__.py +0 -0
  331. mindsdb/interfaces/variables/variables_controller.py +97 -0
  332. mindsdb/migrations/env.py +5 -7
  333. mindsdb/migrations/migrate.py +47 -9
  334. mindsdb/migrations/versions/2025-05-21_9f150e4f9a05_checkpoint_1.py +360 -0
  335. mindsdb/utilities/config.py +333 -220
  336. mindsdb/utilities/context.py +1 -1
  337. mindsdb/utilities/functions.py +0 -36
  338. mindsdb/utilities/langfuse.py +19 -10
  339. mindsdb/utilities/otel/__init__.py +9 -193
  340. mindsdb/utilities/otel/metric_handlers/__init__.py +5 -1
  341. mindsdb/utilities/otel/prepare.py +198 -0
  342. mindsdb/utilities/sql.py +83 -0
  343. mindsdb/utilities/starters.py +13 -0
  344. {mindsdb-25.4.5.0.dist-info → mindsdb-25.5.4.0.dist-info}/METADATA +351 -338
  345. {mindsdb-25.4.5.0.dist-info → mindsdb-25.5.4.0.dist-info}/RECORD +348 -322
  346. {mindsdb-25.4.5.0.dist-info → mindsdb-25.5.4.0.dist-info}/WHEEL +1 -1
  347. mindsdb/api/mysql/mysql_proxy/classes/sql_statement_parser.py +0 -151
  348. mindsdb/integrations/handlers/monkeylearn_handler/requirements.txt +0 -1
  349. {mindsdb-25.4.5.0.dist-info → mindsdb-25.5.4.0.dist-info}/licenses/LICENSE +0 -0
  350. {mindsdb-25.4.5.0.dist-info → mindsdb-25.5.4.0.dist-info}/top_level.txt +0 -0
@@ -7,9 +7,9 @@ class TDEngineHandlerTest(unittest.TestCase):
7
7
  @classmethod
8
8
  def setUpClass(cls):
9
9
  cls.kwargs = {
10
- "token":'<token_for_cloud>',
11
- "url":"********.cloud.tdengine.com",
12
- "database":"temp"
10
+ "token": '<token_for_cloud>',
11
+ "url": "********.cloud.tdengine.com",
12
+ "database": "temp"
13
13
  }
14
14
  cls.handler = TDEngineHandler('test_tdengine_handler', connection_data=cls.kwargs)
15
15
 
@@ -18,26 +18,26 @@ class TDEngineHandlerTest(unittest.TestCase):
18
18
 
19
19
  def test_1_connect(self):
20
20
  assert self.handler.connect()
21
-
21
+
22
22
  def test_2_create_table(self):
23
23
  query = "CREATE Table `hari` USING `temp` (`id`) TAGS (0);"
24
24
  result = self.handler.query(query)
25
- assert result.type is not RESPONSE_TYPE.ERROR
25
+ assert result.type is not RESPONSE_TYPE.ERROR
26
26
  pass
27
27
 
28
28
  def test_3_insert(self):
29
29
  query = "INSERT INTO hari VALUES (NOW, 12);"
30
30
  result = self.handler.query(query)
31
- assert result.type is not RESPONSE_TYPE.ERROR
31
+ assert result.type is not RESPONSE_TYPE.ERROR
32
32
 
33
33
  def test_4_native_query_select(self):
34
34
  query = "SELECT * FROM hari;"
35
35
  result = self.handler.query(query)
36
- assert result.type is RESPONSE_TYPE.TABLE
36
+ assert result.type is RESPONSE_TYPE.TABLE
37
37
 
38
38
  def test_5_get_tables(self):
39
39
  tables = self.handler.get_tables()
40
- assert tables.type is RESPONSE_TYPE.TABLE
40
+ assert tables.type is RESPONSE_TYPE.TABLE
41
41
 
42
42
  def test_6_get_columns(self):
43
43
  columns = self.handler.get_columns('hari')
@@ -1,5 +1,4 @@
1
1
  import unittest
2
- import pandas as pd
3
2
  from mindsdb.integrations.handlers.tidb_handler.tidb_handler import TiDBHandler
4
3
 
5
4
 
@@ -42,4 +41,4 @@ class TiDBHandlerTest(unittest.TestCase):
42
41
 
43
42
  def test_7_select_query(self):
44
43
  query = "SELECT * FROM dt_test WHERE 'id'='a'"
45
- result = self.handler.native_query(query)
44
+ self.handler.native_query(query)
@@ -33,7 +33,7 @@ class TimeGPTHandler(BaseMLEngine):
33
33
  if mode == 'forecasting':
34
34
  assert time_settings["is_timeseries"], "Specify time series settings in your query"
35
35
 
36
- timegpt_token = get_api_key('timegpt', using_args, self.engine_storage, strict=True)
36
+ timegpt_token = get_api_key('timegpt', using_args, self.engine_storage, strict=True)
37
37
  timegpt = NixtlaClient(api_key=timegpt_token)
38
38
  assert timegpt.validate_api_key(), "Invalid TimeGPT token provided."
39
39
 
@@ -64,7 +64,7 @@ class TimeGPTHandler(BaseMLEngine):
64
64
  model_args['add_history'] = True
65
65
 
66
66
  assert isinstance(model_args["level"], list), "`level` must be a list of integers"
67
- assert all([isinstance(l, int) for l in model_args["level"]]), "`level` must be a list of integers"
67
+ assert all([isinstance(level, int) for level in model_args["level"]]), "`level` must be a list of integers"
68
68
 
69
69
  self.model_storage.json_set("model_args", model_args) # persist changes to handler folder
70
70
 
@@ -73,7 +73,7 @@ class TimeGPTHandler(BaseMLEngine):
73
73
  model_args = self.model_storage.json_get("model_args")
74
74
  args = args['predict_params']
75
75
  prediction_df = self._transform_to_nixtla_df(df, model_args)
76
-
76
+
77
77
  timegpt = NixtlaClient(api_key=model_args['token'])
78
78
  assert timegpt.validate_api_key(), "Invalid TimeGPT token provided."
79
79
 
@@ -122,7 +122,7 @@ class TimeGPTHandler(BaseMLEngine):
122
122
  for i, level in enumerate(levels):
123
123
  if i == 0:
124
124
  # NOTE: this should be simplified once we refactor the expected time series output within MindsDB
125
- results_df['confidence'] = level/100 # we report the highest level as the overall confidence
125
+ results_df['confidence'] = level / 100 # we report the highest level as the overall confidence
126
126
  results_df['lower'] = forecast_df[f'TimeGPT-lo-{level}']
127
127
  results_df['upper'] = forecast_df[f'TimeGPT-hi-{level}']
128
128
  else:
@@ -171,7 +171,7 @@ class TimeGPTHandler(BaseMLEngine):
171
171
  if mindate > pd.to_datetime('1970-01-01T00:00:00') and maxdate < pd.to_datetime('2050-12-31T23:59:59'):
172
172
  unit = u
173
173
  df[date_column] = pd.to_datetime(df[date_column], unit=unit, origin='unix')
174
- else:
174
+ else:
175
175
  df[date_column] = pd.to_datetime(df[date_column])
176
176
  df[date_column] = df[date_column].dt.strftime('%Y-%m-%dT%H:%M:%S') # convert to ISO 8601 format
177
177
  df[date_column] = pd.to_datetime(df[date_column])
@@ -1,4 +1,3 @@
1
- from typing import Optional
2
1
  import dill
3
2
  import pandas as pd
4
3
  from mindsdb.integrations.libs.base import BaseMLEngine
@@ -10,32 +9,30 @@ from sklearn.preprocessing import LabelEncoder
10
9
 
11
10
  class TPOTHandler(BaseMLEngine):
12
11
  name = "TPOT"
12
+
13
13
  def create(self, target: str, df: Optional[pd.DataFrame] = None, args: Optional[Dict] = None) -> None:
14
14
  if args is None:
15
15
  args = {}
16
- type_of_cols=infer_types(df,0).dtypes
17
- target_dtype=type_of_cols[target]
18
-
16
+ type_of_cols = infer_types(df, 0).dtypes
17
+ target_dtype = type_of_cols[target]
19
18
 
20
- if target_dtype in ['binary','categorical','tags']:
19
+ if target_dtype in ['binary', 'categorical', 'tags']:
21
20
  model = TPOTClassifier(generations=args.get('generations', 10),
22
- population_size=args.get('population_size', 100),
23
- verbosity=0,
24
- max_time_mins=args.get('max_time_mins', None),
25
- n_jobs=args.get('n_jobs', -1))
26
-
21
+ population_size=args.get('population_size', 100),
22
+ verbosity=0,
23
+ max_time_mins=args.get('max_time_mins', None),
24
+ n_jobs=args.get('n_jobs', -1))
27
25
 
28
- elif target_dtype in ['integer','float','quantity'] :
26
+ elif target_dtype in ['integer', 'float', 'quantity']:
29
27
  model = TPOTRegressor(generations=args.get('generations', 10),
30
- population_size=args.get('population_size', 100),
31
- verbosity=0,
32
- max_time_mins=args.get('max_time_mins', None),
33
- n_jobs=args.get('n_jobs', -1))
34
-
28
+ population_size=args.get('population_size', 100),
29
+ verbosity=0,
30
+ max_time_mins=args.get('max_time_mins', None),
31
+ n_jobs=args.get('n_jobs', -1))
35
32
 
36
33
  if df is not None:
37
34
  # Separate out the categorical and non-categorical columns
38
- categorical_cols=[col for col, type_col in type_of_cols.items() if type_col in ('categorical', 'binary')]
35
+ categorical_cols = [col for col, type_col in type_of_cols.items() if type_col in ('categorical', 'binary')]
39
36
 
40
37
  # Fit a LabelEncoder for each categorical column and store it in a dictionary
41
38
  le_dict = {}
@@ -47,30 +44,28 @@ class TPOTHandler(BaseMLEngine):
47
44
  # Encode the categorical column using the fitted LabelEncoder
48
45
  df[col] = le.transform(df[col])
49
46
 
50
-
51
47
  model.fit(df.drop(columns=[target]), df[target])
52
48
  self.model_storage.json_set('args', args)
53
49
  self.model_storage.file_set('le_dict', dill.dumps(le_dict))
54
50
  self.model_storage.file_set('model', dill.dumps(model.fitted_pipeline_))
55
- else :
51
+ else:
56
52
  raise Exception(
57
53
  "Data is empty!!"
58
54
  )
59
-
60
55
 
61
56
  def predict(self, df: pd.DataFrame, args: Optional[Dict] = None) -> pd.DataFrame:
62
57
 
63
- model=dill.loads(self.model_storage.file_get("model"))
64
- le_dict=dill.loads(self.model_storage.file_get("le_dict"))
65
- target=self.model_storage.json_get('args').get("target")
58
+ model = dill.loads(self.model_storage.file_get("model"))
59
+ le_dict = dill.loads(self.model_storage.file_get("le_dict"))
60
+ target = self.model_storage.json_get('args').get("target")
66
61
 
67
- # Encode the categorical columns in the input DataFrame using the saved LabelEncoders
62
+ # Encode the categorical columns in the input DataFrame using the saved LabelEncoders
68
63
  for col, le in le_dict.items():
69
64
  if col in df.columns:
70
65
  df[col] = le.transform(df[col])
71
-
66
+
72
67
  # Make predictions using the trained TPOT model
73
- results=pd.DataFrame(model.predict(df),columns=[target])
68
+ results = pd.DataFrame(model.predict(df), columns=[target])
74
69
 
75
70
  # Decode the predicted categorical values back into their original values
76
71
  for col, le in le_dict.items():
@@ -1,9 +1,9 @@
1
1
  import re
2
2
  from typing import Dict
3
3
  import pandas as pd
4
- from pyhive import (trino, sqlalchemy_trino)
4
+ from pyhive import sqlalchemy_trino
5
5
  from mindsdb_sql_parser import parse_sql, ASTNode
6
- from trino.auth import KerberosAuthentication, BasicAuthentication
6
+ from trino.auth import BasicAuthentication
7
7
  from trino.dbapi import connect
8
8
  from mindsdb.utilities.render.sqlalchemy_render import SqlalchemyRender
9
9
  from mindsdb.integrations.libs.base import DatabaseHandler
@@ -13,10 +13,10 @@ from mindsdb.integrations.libs.response import (
13
13
  HandlerResponse as Response,
14
14
  RESPONSE_TYPE
15
15
  )
16
- from .trino_config_provider import TrinoConfigProvider
17
16
 
18
17
  logger = log.getLogger(__name__)
19
18
 
19
+
20
20
  class TrinoHandler(DatabaseHandler):
21
21
  """
22
22
  This handler handles connection and execution of the Trino statements
@@ -59,24 +59,24 @@ class TrinoHandler(DatabaseHandler):
59
59
  return self.connection
60
60
 
61
61
  # option configuration
62
- http_scheme='http'
63
- auth=None
64
- auth_config=None
65
- password=None
62
+ http_scheme = 'http'
63
+ auth = None
64
+ auth_config = None
65
+ password = None
66
66
 
67
67
  if 'auth' in self.connection_data:
68
- auth=self.connection_data['auth']
68
+ auth = self.connection_data['auth']
69
69
  if 'password' in self.connection_data:
70
- password=self.connection_data['password']
70
+ password = self.connection_data['password']
71
71
  if 'http_scheme' in self.connection_data:
72
- http_scheme=self.connection_data['http_scheme']
72
+ http_scheme = self.connection_data['http_scheme']
73
73
  if 'with' in self.connection_data:
74
- self.with_clause=self.connection_data['with']
74
+ self.with_clause = self.connection_data['with']
75
75
 
76
- if password and auth=='kerberos':
76
+ if password and auth == 'kerberos':
77
77
  raise Exception("Kerberos authorization doesn't support password.")
78
78
  elif password:
79
- auth_config=BasicAuthentication(self.connection_data['user'], password)
79
+ auth_config = BasicAuthentication(self.connection_data['user'], password)
80
80
 
81
81
  if auth:
82
82
  conn = connect(
@@ -159,7 +159,7 @@ class TrinoHandler(DatabaseHandler):
159
159
  renderer = SqlalchemyRender(sqlalchemy_trino.TrinoDialect)
160
160
  query_str = renderer.get_string(query, with_failback=True)
161
161
  modified_query_str = re.sub(
162
- "(?is)(CREATE.+TABLE.+\(.*\))",
162
+ r"(?is)(CREATE.+TABLE.+\(.*\))",
163
163
  f"\\1 {self.with_clause}",
164
164
  query_str
165
165
  )
@@ -1,10 +1,8 @@
1
1
  import re
2
2
  import os
3
3
  import datetime as dt
4
- import ast
5
4
  import time
6
5
  from collections import defaultdict
7
- import pytz
8
6
  import io
9
7
  import requests
10
8
 
@@ -28,6 +26,7 @@ from mindsdb.integrations.libs.response import (
28
26
 
29
27
  logger = log.getLogger(__name__)
30
28
 
29
+
31
30
  class TweetsTable(APITable):
32
31
 
33
32
  def select(self, query: ast.Select) -> Response:
@@ -39,7 +38,7 @@ class TweetsTable(APITable):
39
38
  for op, arg1, arg2 in conditions:
40
39
 
41
40
  if op == 'or':
42
- raise NotImplementedError(f'OR is not supported')
41
+ raise NotImplementedError('OR is not supported')
43
42
  if arg1 == 'created_at':
44
43
  date = parse_utc_date(arg2)
45
44
  if op == '>':
@@ -170,7 +169,6 @@ class TweetsTable(APITable):
170
169
 
171
170
  media_ids = [media.media_id]
172
171
 
173
-
174
172
  words = re.split('( )', text)
175
173
 
176
174
  messages = []
@@ -1,20 +1,19 @@
1
1
  import os
2
2
  import pytest
3
- import pandas as pd
4
3
 
5
4
  from mindsdb_sql_parser import parse_sql
6
5
 
7
6
  from tests.unit.executor_test_base import BaseExecutorTest
8
7
 
8
+
9
9
  class TestUnify(BaseExecutorTest):
10
-
10
+
11
11
  def run_sql(self, sql):
12
12
  ret = self.command_executor.execute_command(parse_sql(sql))
13
13
  assert ret.error_code is None
14
14
  if ret.data is not None:
15
15
  return ret.data.to_df()
16
16
 
17
-
18
17
  """
19
18
  Integration tests for the Unify handler.
20
19
  """
@@ -25,20 +24,20 @@ class TestUnify(BaseExecutorTest):
25
24
  """
26
25
  super().setup_method()
27
26
  self.run_sql("create database proj")
28
-
27
+
29
28
  @pytest.mark.skipif(os.environ.get('UNIFY_API_KEY') is None, reason='Missing API key!')
30
29
  def test_unify_correct_flow(self):
31
30
  self.run_sql(
32
- f"""
31
+ f"""
33
32
  CREATE ML_ENGINE unify_engine
34
33
  FROM unify
35
34
  USING
36
35
  unify_api_key = '{os.environ.get('UNIFY_API_KEY')}';
37
36
  """
38
37
  )
39
-
38
+
40
39
  self.run_sql(
41
- f"""
40
+ """
42
41
  CREATE MODEL proj.test_unify_correct_flow
43
42
  PREDICT output
44
43
  USING
@@ -51,7 +50,7 @@ class TestUnify(BaseExecutorTest):
51
50
  self.wait_predictor("proj", "test_unify_correct_flow")
52
51
 
53
52
  result_df = self.run_sql(
54
- """
53
+ """
55
54
  SELECT text, output
56
55
  FROM proj.test_unify_correct_flow
57
56
  WHERE text = 'Hello';
@@ -12,6 +12,7 @@ from mindsdb.integrations.utilities.handler_utils import get_api_key
12
12
 
13
13
  logger = log.getLogger(__name__)
14
14
 
15
+
15
16
  class UnifyHandler(BaseMLEngine):
16
17
  """
17
18
  Integration with the Unifyai Python Library
@@ -26,9 +27,8 @@ class UnifyHandler(BaseMLEngine):
26
27
  self.model_storage.json_set('args', args)
27
28
 
28
29
  def predict(self, df: Optional[pd.DataFrame] = None, args: Optional[Dict] = None) -> None:
29
-
30
+
30
31
  args = self.model_storage.json_get('args')
31
-
32
32
 
33
33
  input_keys = list(args.keys())
34
34
 
@@ -41,7 +41,7 @@ class UnifyHandler(BaseMLEngine):
41
41
  if 'provider' not in args['using']:
42
42
  raise Exception("Unify requires a provider parameter in the USING clause! Refer to its documentation for more details.")
43
43
  provider = args['using']['provider']
44
-
44
+
45
45
  self.endpoint = model + '@' + provider
46
46
  self.api_key = get_api_key('unify', args["using"], self.engine_storage, strict=False)
47
47
  available_endpoints = unify.utils.list_endpoints(api_key=self.api_key)
@@ -51,15 +51,15 @@ class UnifyHandler(BaseMLEngine):
51
51
  question_column = args['using']['column']
52
52
  if question_column not in df.columns:
53
53
  raise RuntimeError(f'Column "{question_column}" not found in input data')
54
-
55
- result_df = pd.DataFrame()
56
- result_df['predictions'] = df[question_column].apply(self.predict_answer)
54
+
55
+ result_df = pd.DataFrame()
56
+ result_df['predictions'] = df[question_column].apply(self.predict_answer)
57
57
  result_df = result_df.rename(columns={'predictions': args['target']})
58
-
58
+
59
59
  return result_df
60
-
60
+
61
61
  def predict_answer(self, text):
62
-
62
+
63
63
  client = unify.Unify(self.endpoint, api_key=self.api_key)
64
64
 
65
65
  response = client.generate(text)
@@ -1 +1,2 @@
1
1
  google-cloud-aiplatform>=1.35.0
2
+ -r mindsdb/integrations/utilities/handlers/auth_utilities/google/requirements.txt
@@ -2,7 +2,7 @@ from mindsdb.utilities import log
2
2
  from google.cloud.aiplatform import init, TabularDataset, Model, Endpoint
3
3
  import pandas as pd
4
4
 
5
- from mindsdb.integrations.utilities.handlers.auth_utilities import GoogleServiceAccountOAuth2Manager
5
+ from mindsdb.integrations.utilities.handlers.auth_utilities.google import GoogleServiceAccountOAuth2Manager
6
6
 
7
7
  logger = log.getLogger(__name__)
8
8
 
@@ -8,14 +8,14 @@ class VerticaHandlerTest(unittest.TestCase):
8
8
  def setUpClass(cls):
9
9
  cls.kwargs = {
10
10
  "connection_data": {
11
- "host":'127.0.0.1',
12
- "port":5433,
13
- "user":'dbadmin',
14
- "password":'',
15
- "database":'VMart',
16
- "schema_name":'public'
11
+ "host": '127.0.0.1',
12
+ "port": 5433,
13
+ "user": 'dbadmin',
14
+ "password": '',
15
+ "database": 'VMart',
16
+ "schema_name": 'public'
17
17
  }
18
-
18
+
19
19
  }
20
20
  cls.handler = VerticaHandler('test_vertica_handler', cls.kwargs)
21
21
 
@@ -24,21 +24,21 @@ class VerticaHandlerTest(unittest.TestCase):
24
24
 
25
25
  def test_1_connect(self):
26
26
  assert self.handler.connect()
27
-
27
+
28
28
  def test_2_create_table(self):
29
29
  query = "CREATE Table TEST(id Number(1),Name Varchar(33))"
30
30
  result = self.handler.query(query)
31
- assert result.type is not RESPONSE_TYPE.ERROR
31
+ assert result.type is not RESPONSE_TYPE.ERROR
32
32
 
33
33
  def test_3_insert(self):
34
34
  query = "INSERT INTO TEST (1,'lOVe yOU)"
35
35
  result = self.handler.query(query)
36
- assert result.type is not RESPONSE_TYPE.ERROR
36
+ assert result.type is not RESPONSE_TYPE.ERROR
37
37
 
38
38
  def test_4_native_query_select(self):
39
39
  query = "SELECT * FROM TEST;"
40
40
  result = self.handler.query(query)
41
- assert result.type is RESPONSE_TYPE.TABLE
41
+ assert result.type is RESPONSE_TYPE.TABLE
42
42
 
43
43
  def test_5_get_tables(self):
44
44
  tables = self.handler.get_tables()
@@ -30,7 +30,7 @@ class VerticaHandler(DatabaseHandler):
30
30
 
31
31
  def __init__(self, name, connection_data: Optional[dict], **kwargs):
32
32
  super().__init__(name)
33
-
33
+
34
34
  self.parser = parse_sql
35
35
  self.dialect = 'vertica'
36
36
  self.kwargs = kwargs
@@ -40,7 +40,6 @@ class VerticaHandler(DatabaseHandler):
40
40
  self.connection = None
41
41
  self.is_connected = False
42
42
 
43
-
44
43
  def connect(self):
45
44
  if self.is_connected is True:
46
45
  return self.connection
@@ -66,7 +65,7 @@ class VerticaHandler(DatabaseHandler):
66
65
  return
67
66
 
68
67
  def check_connection(self) -> StatusResponse:
69
-
68
+
70
69
  result = StatusResponse(False)
71
70
  need_to_close = self.is_connected is False
72
71
 
@@ -96,10 +95,10 @@ class VerticaHandler(DatabaseHandler):
96
95
  connection = self.connect()
97
96
  with connection.cursor() as cur:
98
97
  try:
99
- e=cur.execute(query)
98
+ e = cur.execute(query)
100
99
  result = e.fetchall()
101
100
  if e.rowcount != -1:
102
-
101
+
103
102
  response = Response(
104
103
  RESPONSE_TYPE.TABLE,
105
104
  pd.DataFrame(
@@ -135,26 +134,24 @@ class VerticaHandler(DatabaseHandler):
135
134
  """
136
135
  Get a list with all of the tabels in VERTICA
137
136
  """
138
- q = f'''SELECT
137
+ q = f'''SELECT
139
138
  TABLE_NAME,
140
139
  TABLE_SCHEMA
141
- from v_catalog.tables
142
- WHERE table_schema='{self.schema_name}'
140
+ from v_catalog.tables
141
+ WHERE table_schema='{self.schema_name}'
143
142
  order by
144
143
  table_name;'''
145
144
 
146
-
147
145
  return self.native_query(q)
148
146
 
149
147
  def get_columns(self, table_name) -> Response:
150
148
  """
151
149
  Show details about the table
152
150
  """
153
- q = f'''SELECT
154
- column_name ,
155
- data_type
156
- FROM v_catalog.columns
151
+ q = f'''SELECT
152
+ column_name ,
153
+ data_type
154
+ FROM v_catalog.columns
157
155
  WHERE table_name='{table_name}';'''
158
156
 
159
-
160
157
  return self.native_query(q)
@@ -2,13 +2,14 @@ import unittest
2
2
  from mindsdb.integrations.handlers.vitess_handler.vitess_handler import VitessHandler
3
3
  from mindsdb.integrations.libs.response import RESPONSE_TYPE
4
4
 
5
+
5
6
  class VitessHandlerTest(unittest.TestCase):
6
7
  @classmethod
7
8
  def setUpClass(cls):
8
9
  cls.kwargs = {
9
10
  "connection_data": {
10
11
  "host": "localhost",
11
- "port": 33577 ,
12
+ "port": 33577,
12
13
  "user": "root",
13
14
  "password": "",
14
15
  "database": "vitess",
@@ -21,36 +22,33 @@ class VitessHandlerTest(unittest.TestCase):
21
22
 
22
23
  def test_1_connect(self):
23
24
  assert self.handler.connect()
24
-
25
+
25
26
  def test_2_create_table(self):
26
27
  query = "CREATE Table IF NOT EXISTS Lover(name varchar(101));"
27
28
  result = self.handler.query(query)
28
- assert result.type is not RESPONSE_TYPE.ERROR
29
+ assert result.type is not RESPONSE_TYPE.ERROR
29
30
 
30
31
  def test_3_insert(self):
31
32
  query = "INSERT INTO LOVER VALUES('Shiv Shakti');"
32
33
  result = self.handler.query(query)
33
- assert result.type is not RESPONSE_TYPE.ERROR
34
+ assert result.type is not RESPONSE_TYPE.ERROR
34
35
 
35
36
  def test_4_native_query_select(self):
36
37
  query = "SELECT * FROM LOVER;"
37
38
  result = self.handler.query(query)
38
- assert result.type is RESPONSE_TYPE.TABLE
39
+ assert result.type is RESPONSE_TYPE.TABLE
39
40
 
40
41
  def test_5_get_tables(self):
41
42
  tables = self.handler.get_tables()
42
- assert tables.type is RESPONSE_TYPE.TABLE
43
+ assert tables.type is RESPONSE_TYPE.TABLE
43
44
 
44
45
  def test_6_get_columns(self):
45
46
  columns = self.handler.get_columns('LOVER')
46
-
47
+
47
48
  query = "DROP Table IF EXISTS Lover;"
48
- result = self.handler.query(query)
49
+ self.handler.query(query)
49
50
  assert columns.type is not RESPONSE_TYPE.ERROR
50
51
 
51
52
 
52
53
  if __name__ == '__main__':
53
54
  unittest.main()
54
-
55
-
56
-
@@ -15,7 +15,6 @@ class VitessHandler(MysqlHandler):
15
15
  super().__init__(name, **kwargs)
16
16
 
17
17
 
18
-
19
18
  connection_args = OrderedDict(
20
19
  user={
21
20
  'type': ARG_TYPE.STR,
@@ -83,6 +83,7 @@ class WebHandler(APIHandler):
83
83
  """
84
84
  Web handler, handling crawling content from websites.
85
85
  """
86
+
86
87
  def __init__(self, name=None, **kwargs):
87
88
  super().__init__(name)
88
89
  crawler = CrawlerTable(self)
@@ -10,7 +10,7 @@ try:
10
10
  except Exception as e:
11
11
  Handler = None
12
12
  import_error = e
13
-
13
+
14
14
  title = 'WhatsApp'
15
15
  name = 'whatsapp'
16
16
  type = HANDLER_TYPE.DATA
@@ -21,8 +21,8 @@ __all__ = [
21
21
  'version',
22
22
  'name',
23
23
  'type',
24
- 'title',
24
+ 'title',
25
25
  'description',
26
26
  'import_error',
27
27
  'icon_path'
28
- ]
28
+ ]
@@ -359,4 +359,4 @@ class WriterEvaluator:
359
359
  elif self.args.evaluation_type == "e2e":
360
360
  return self.evaluate_e2e()
361
361
  else:
362
- raise ValueError(f"evaluation_type must be either 'retrieval' or 'e2e'")
362
+ raise ValueError("evaluation_type must be either 'retrieval' or 'e2e'")
@@ -2,7 +2,6 @@ from typing import List, Union
2
2
  from pydantic import BaseModel, Extra, field_validator
3
3
 
4
4
  from mindsdb.integrations.handlers.rag_handler.settings import (
5
- DEFAULT_EMBEDDINGS_MODEL,
6
5
  RAGBaseParameters,
7
6
  )
8
7
  from langchain_core.callbacks import StreamingStdOutCallbackHandler
@@ -22,6 +22,7 @@ from mindsdb.utilities import log
22
22
 
23
23
  logger = log.getLogger(__name__)
24
24
 
25
+
25
26
  def extract_llm_params(args):
26
27
  """extract llm params from input query args"""
27
28
 
@@ -1,2 +1,3 @@
1
1
  google-api-python-client
2
2
  youtube-transcript-api
3
+ -r mindsdb/integrations/utilities/handlers/auth_utilities/google/requirements.txt