MindsDB 25.5.3.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 (310) hide show
  1. mindsdb/__about__.py +1 -1
  2. mindsdb/__main__.py +127 -79
  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 +47 -27
  20. mindsdb/api/executor/datahub/classes/response.py +5 -2
  21. mindsdb/api/executor/datahub/datanodes/integration_datanode.py +39 -72
  22. mindsdb/api/executor/planner/query_planner.py +10 -1
  23. mindsdb/api/executor/sql_query/result_set.py +185 -52
  24. mindsdb/api/executor/sql_query/sql_query.py +1 -1
  25. mindsdb/api/executor/sql_query/steps/apply_predictor_step.py +9 -12
  26. mindsdb/api/executor/sql_query/steps/fetch_dataframe.py +8 -10
  27. mindsdb/api/executor/sql_query/steps/fetch_dataframe_partition.py +5 -44
  28. mindsdb/api/executor/sql_query/steps/insert_step.py +24 -15
  29. mindsdb/api/executor/sql_query/steps/join_step.py +1 -1
  30. mindsdb/api/executor/sql_query/steps/project_step.py +1 -1
  31. mindsdb/api/executor/sql_query/steps/sql_steps.py +1 -1
  32. mindsdb/api/executor/sql_query/steps/subselect_step.py +4 -8
  33. mindsdb/api/executor/sql_query/steps/union_step.py +1 -3
  34. mindsdb/api/http/initialize.py +99 -83
  35. mindsdb/api/http/namespaces/analysis.py +3 -3
  36. mindsdb/api/http/namespaces/file.py +8 -2
  37. mindsdb/api/http/namespaces/sql.py +13 -27
  38. mindsdb/api/mcp/start.py +42 -5
  39. mindsdb/api/mysql/mysql_proxy/data_types/mysql_packet.py +0 -1
  40. mindsdb/api/mysql/mysql_proxy/data_types/mysql_packets/binary_resultset_row_package.py +52 -19
  41. mindsdb/api/mysql/mysql_proxy/executor/mysql_executor.py +8 -10
  42. mindsdb/api/mysql/mysql_proxy/libs/constants/mysql.py +54 -38
  43. mindsdb/api/mysql/mysql_proxy/mysql_proxy.py +82 -115
  44. mindsdb/api/mysql/mysql_proxy/utilities/dump.py +351 -0
  45. mindsdb/api/postgres/postgres_proxy/executor/executor.py +1 -1
  46. mindsdb/api/postgres/postgres_proxy/postgres_proxy.py +5 -6
  47. mindsdb/integrations/handlers/altibase_handler/altibase_handler.py +26 -27
  48. mindsdb/integrations/handlers/altibase_handler/connection_args.py +13 -13
  49. mindsdb/integrations/handlers/altibase_handler/tests/test_altibase_handler.py +8 -8
  50. mindsdb/integrations/handlers/altibase_handler/tests/test_altibase_handler_dsn.py +13 -13
  51. mindsdb/integrations/handlers/anthropic_handler/__init__.py +2 -2
  52. mindsdb/integrations/handlers/anthropic_handler/anthropic_handler.py +1 -3
  53. mindsdb/integrations/handlers/aurora_handler/aurora_handler.py +1 -0
  54. mindsdb/integrations/handlers/autosklearn_handler/autosklearn_handler.py +1 -1
  55. mindsdb/integrations/handlers/autosklearn_handler/config.py +0 -1
  56. mindsdb/integrations/handlers/bigquery_handler/bigquery_handler.py +1 -1
  57. mindsdb/integrations/handlers/bigquery_handler/tests/test_bigquery_handler.py +1 -1
  58. mindsdb/integrations/handlers/binance_handler/binance_handler.py +1 -0
  59. mindsdb/integrations/handlers/binance_handler/binance_tables.py +3 -4
  60. mindsdb/integrations/handlers/byom_handler/__init__.py +0 -1
  61. mindsdb/integrations/handlers/ckan_handler/ckan_handler.py +3 -0
  62. mindsdb/integrations/handlers/clickhouse_handler/__init__.py +1 -1
  63. mindsdb/integrations/handlers/cloud_spanner_handler/tests/test_cloud_spanner_handler.py +0 -2
  64. mindsdb/integrations/handlers/cloud_sql_handler/cloud_sql_handler.py +0 -1
  65. mindsdb/integrations/handlers/cohere_handler/__init__.py +1 -1
  66. mindsdb/integrations/handlers/cohere_handler/cohere_handler.py +11 -13
  67. mindsdb/integrations/handlers/confluence_handler/confluence_tables.py +6 -0
  68. mindsdb/integrations/handlers/databend_handler/connection_args.py +1 -1
  69. mindsdb/integrations/handlers/databend_handler/databend_handler.py +4 -4
  70. mindsdb/integrations/handlers/databend_handler/tests/__init__.py +0 -1
  71. mindsdb/integrations/handlers/databend_handler/tests/test_databend_handler.py +1 -1
  72. mindsdb/integrations/handlers/derby_handler/connection_args.py +1 -1
  73. mindsdb/integrations/handlers/derby_handler/derby_handler.py +14 -22
  74. mindsdb/integrations/handlers/derby_handler/tests/test_derby_handler.py +6 -6
  75. mindsdb/integrations/handlers/discord_handler/discord_handler.py +5 -5
  76. mindsdb/integrations/handlers/discord_handler/discord_tables.py +3 -3
  77. mindsdb/integrations/handlers/discord_handler/tests/test_discord.py +5 -3
  78. mindsdb/integrations/handlers/dockerhub_handler/dockerhub.py +3 -3
  79. mindsdb/integrations/handlers/dockerhub_handler/dockerhub_handler.py +2 -2
  80. mindsdb/integrations/handlers/dockerhub_handler/dockerhub_tables.py +57 -54
  81. mindsdb/integrations/handlers/dremio_handler/__init__.py +2 -2
  82. mindsdb/integrations/handlers/druid_handler/__init__.py +1 -1
  83. mindsdb/integrations/handlers/druid_handler/druid_handler.py +2 -2
  84. mindsdb/integrations/handlers/edgelessdb_handler/tests/test_edgelessdb_handler.py +9 -9
  85. mindsdb/integrations/handlers/email_handler/email_client.py +1 -1
  86. mindsdb/integrations/handlers/email_handler/email_ingestor.py +1 -1
  87. mindsdb/integrations/handlers/email_handler/email_tables.py +0 -1
  88. mindsdb/integrations/handlers/email_handler/settings.py +0 -1
  89. mindsdb/integrations/handlers/eventstoredb_handler/eventstoredb_handler.py +2 -1
  90. mindsdb/integrations/handlers/firebird_handler/firebird_handler.py +1 -1
  91. mindsdb/integrations/handlers/flaml_handler/flaml_handler.py +9 -9
  92. mindsdb/integrations/handlers/frappe_handler/frappe_client.py +5 -5
  93. mindsdb/integrations/handlers/frappe_handler/frappe_handler.py +6 -5
  94. mindsdb/integrations/handlers/frappe_handler/frappe_tables.py +2 -2
  95. mindsdb/integrations/handlers/github_handler/connection_args.py +2 -2
  96. mindsdb/integrations/handlers/github_handler/github_handler.py +1 -8
  97. mindsdb/integrations/handlers/github_handler/github_tables.py +13 -24
  98. mindsdb/integrations/handlers/gitlab_handler/gitlab_handler.py +2 -1
  99. mindsdb/integrations/handlers/gitlab_handler/gitlab_tables.py +1 -4
  100. mindsdb/integrations/handlers/gmail_handler/gmail_handler.py +6 -13
  101. mindsdb/integrations/handlers/google_books_handler/google_books_handler.py +2 -1
  102. mindsdb/integrations/handlers/google_books_handler/google_books_tables.py +0 -3
  103. mindsdb/integrations/handlers/google_calendar_handler/google_calendar_handler.py +4 -4
  104. mindsdb/integrations/handlers/google_calendar_handler/google_calendar_tables.py +2 -6
  105. mindsdb/integrations/handlers/google_content_shopping_handler/google_content_shopping_handler.py +3 -2
  106. mindsdb/integrations/handlers/google_content_shopping_handler/google_content_shopping_tables.py +0 -3
  107. mindsdb/integrations/handlers/google_fit_handler/google_fit_handler.py +10 -12
  108. mindsdb/integrations/handlers/google_fit_handler/google_fit_tables.py +11 -13
  109. mindsdb/integrations/handlers/google_search_handler/google_search_handler.py +2 -1
  110. mindsdb/integrations/handlers/google_search_handler/google_search_tables.py +0 -3
  111. mindsdb/integrations/handlers/groq_handler/__init__.py +3 -3
  112. mindsdb/integrations/handlers/hackernews_handler/hn_handler.py +5 -7
  113. mindsdb/integrations/handlers/hackernews_handler/hn_table.py +6 -7
  114. mindsdb/integrations/handlers/hive_handler/tests/test_hive_handler.py +1 -1
  115. mindsdb/integrations/handlers/hsqldb_handler/connection_args.py +6 -6
  116. mindsdb/integrations/handlers/hsqldb_handler/hsqldb_handler.py +4 -3
  117. mindsdb/integrations/handlers/huggingface_api_handler/exceptions.py +1 -1
  118. mindsdb/integrations/handlers/huggingface_api_handler/huggingface_api_handler.py +1 -8
  119. mindsdb/integrations/handlers/huggingface_handler/huggingface_handler.py +6 -6
  120. mindsdb/integrations/handlers/huggingface_handler/requirements.txt +1 -1
  121. mindsdb/integrations/handlers/huggingface_handler/requirements_cpu.txt +1 -1
  122. mindsdb/integrations/handlers/ignite_handler/ignite_handler.py +2 -1
  123. mindsdb/integrations/handlers/impala_handler/impala_handler.py +9 -12
  124. mindsdb/integrations/handlers/impala_handler/tests/test_impala_handler.py +11 -11
  125. mindsdb/integrations/handlers/influxdb_handler/influxdb_handler.py +10 -13
  126. mindsdb/integrations/handlers/influxdb_handler/influxdb_tables.py +20 -20
  127. mindsdb/integrations/handlers/informix_handler/__about__.py +8 -8
  128. mindsdb/integrations/handlers/informix_handler/__init__.py +12 -5
  129. mindsdb/integrations/handlers/informix_handler/informix_handler.py +99 -133
  130. mindsdb/integrations/handlers/informix_handler/tests/test_informix_handler.py +13 -11
  131. mindsdb/integrations/handlers/ingres_handler/__about__.py +0 -1
  132. mindsdb/integrations/handlers/ingres_handler/ingres_handler.py +1 -0
  133. mindsdb/integrations/handlers/jira_handler/jira_handler.py +4 -4
  134. mindsdb/integrations/handlers/jira_handler/jira_tables.py +9 -9
  135. mindsdb/integrations/handlers/kinetica_handler/__init__.py +0 -1
  136. mindsdb/integrations/handlers/langchain_handler/langchain_handler.py +4 -4
  137. mindsdb/integrations/handlers/langchain_handler/tools.py +9 -10
  138. mindsdb/integrations/handlers/leonardoai_handler/__init__.py +1 -1
  139. mindsdb/integrations/handlers/lightwood_handler/functions.py +2 -2
  140. mindsdb/integrations/handlers/lightwood_handler/lightwood_handler.py +0 -1
  141. mindsdb/integrations/handlers/lightwood_handler/tests/test_lightwood_handler.py +11 -11
  142. mindsdb/integrations/handlers/llama_index_handler/llama_index_handler.py +4 -4
  143. mindsdb/integrations/handlers/llama_index_handler/settings.py +10 -9
  144. mindsdb/integrations/handlers/materialize_handler/tests/test_materialize_handler.py +8 -10
  145. mindsdb/integrations/handlers/matrixone_handler/matrixone_handler.py +4 -4
  146. mindsdb/integrations/handlers/matrixone_handler/tests/test_matrixone_handler.py +8 -9
  147. mindsdb/integrations/handlers/maxdb_handler/connection_args.py +25 -25
  148. mindsdb/integrations/handlers/maxdb_handler/maxdb_handler.py +1 -0
  149. mindsdb/integrations/handlers/mediawiki_handler/mediawiki_handler.py +3 -2
  150. mindsdb/integrations/handlers/mediawiki_handler/mediawiki_tables.py +1 -1
  151. mindsdb/integrations/handlers/mendeley_handler/__about__.py +1 -1
  152. mindsdb/integrations/handlers/mendeley_handler/__init__.py +2 -2
  153. mindsdb/integrations/handlers/mendeley_handler/mendeley_handler.py +48 -56
  154. mindsdb/integrations/handlers/mendeley_handler/mendeley_tables.py +24 -29
  155. mindsdb/integrations/handlers/mendeley_handler/tests/test_mendeley_handler.py +19 -17
  156. mindsdb/integrations/handlers/merlion_handler/merlion_handler.py +5 -4
  157. mindsdb/integrations/handlers/minds_endpoint_handler/__init__.py +3 -3
  158. mindsdb/integrations/handlers/mlflow_handler/mlflow_handler.py +58 -36
  159. mindsdb/integrations/handlers/monetdb_handler/__about__.py +8 -8
  160. mindsdb/integrations/handlers/monetdb_handler/__init__.py +15 -5
  161. mindsdb/integrations/handlers/monetdb_handler/connection_args.py +17 -18
  162. mindsdb/integrations/handlers/monetdb_handler/monetdb_handler.py +40 -57
  163. mindsdb/integrations/handlers/monetdb_handler/tests/test_monetdb_handler.py +7 -8
  164. mindsdb/integrations/handlers/monetdb_handler/utils/monet_get_id.py +13 -14
  165. mindsdb/integrations/handlers/monkeylearn_handler/__about__.py +1 -1
  166. mindsdb/integrations/handlers/monkeylearn_handler/__init__.py +1 -1
  167. mindsdb/integrations/handlers/monkeylearn_handler/monkeylearn_handler.py +2 -5
  168. mindsdb/integrations/handlers/ms_one_drive_handler/ms_graph_api_one_drive_client.py +1 -0
  169. mindsdb/integrations/handlers/ms_one_drive_handler/ms_one_drive_handler.py +1 -1
  170. mindsdb/integrations/handlers/ms_teams_handler/ms_graph_api_teams_client.py +23 -23
  171. mindsdb/integrations/handlers/ms_teams_handler/ms_teams_handler.py +3 -3
  172. mindsdb/integrations/handlers/ms_teams_handler/ms_teams_tables.py +10 -5
  173. mindsdb/integrations/handlers/mssql_handler/mssql_handler.py +73 -8
  174. mindsdb/integrations/handlers/mysql_handler/__about__.py +8 -8
  175. mindsdb/integrations/handlers/mysql_handler/__init__.py +15 -5
  176. mindsdb/integrations/handlers/mysql_handler/connection_args.py +43 -47
  177. mindsdb/integrations/handlers/mysql_handler/mysql_handler.py +101 -34
  178. mindsdb/integrations/handlers/mysql_handler/settings.py +15 -13
  179. mindsdb/integrations/handlers/neuralforecast_handler/neuralforecast_handler.py +1 -1
  180. mindsdb/integrations/handlers/newsapi_handler/newsapi_handler.py +1 -1
  181. mindsdb/integrations/handlers/newsapi_handler/tests/test_newsapi_handler.py +4 -4
  182. mindsdb/integrations/handlers/nuo_jdbc_handler/connection_args.py +2 -2
  183. mindsdb/integrations/handlers/nuo_jdbc_handler/nuo_jdbc_handler.py +28 -36
  184. mindsdb/integrations/handlers/nuo_jdbc_handler/tests/test_nuo_handler.py +5 -5
  185. mindsdb/integrations/handlers/oceanbase_handler/oceanbase_handler.py +0 -1
  186. mindsdb/integrations/handlers/oceanbase_handler/tests/test_oceanbase_handler.py +8 -10
  187. mindsdb/integrations/handlers/ollama_handler/ollama_handler.py +3 -3
  188. mindsdb/integrations/handlers/opengauss_handler/tests/test_opengauss_handler.py +1 -2
  189. mindsdb/integrations/handlers/openstreetmap_handler/__init__.py +7 -7
  190. mindsdb/integrations/handlers/oracle_handler/connection_args.py +6 -0
  191. mindsdb/integrations/handlers/oracle_handler/oracle_handler.py +77 -11
  192. mindsdb/integrations/handlers/orioledb_handler/tests/test_orioledb_handler.py +8 -10
  193. mindsdb/integrations/handlers/palm_handler/__about__.py +1 -1
  194. mindsdb/integrations/handlers/palm_handler/__init__.py +1 -1
  195. mindsdb/integrations/handlers/palm_handler/palm_handler.py +1 -3
  196. mindsdb/integrations/handlers/paypal_handler/paypal_handler.py +2 -2
  197. mindsdb/integrations/handlers/paypal_handler/paypal_tables.py +15 -14
  198. mindsdb/integrations/handlers/pgvector_handler/pgvector_handler.py +53 -10
  199. mindsdb/integrations/handlers/phoenix_handler/__init__.py +1 -1
  200. mindsdb/integrations/handlers/phoenix_handler/phoenix_handler.py +1 -0
  201. mindsdb/integrations/handlers/pinot_handler/__init__.py +1 -1
  202. mindsdb/integrations/handlers/pinot_handler/pinot_handler.py +3 -2
  203. mindsdb/integrations/handlers/plaid_handler/plaid_handler.py +13 -13
  204. mindsdb/integrations/handlers/plaid_handler/plaid_tables.py +10 -12
  205. mindsdb/integrations/handlers/plaid_handler/utils.py +4 -6
  206. mindsdb/integrations/handlers/planetscale_handler/planetscale_handler.py +1 -4
  207. mindsdb/integrations/handlers/portkey_handler/__init__.py +2 -2
  208. mindsdb/integrations/handlers/postgres_handler/postgres_handler.py +105 -24
  209. mindsdb/integrations/handlers/postgres_handler/tests/test_postgres_handler.py +11 -6
  210. mindsdb/integrations/handlers/questdb_handler/questdb_handler.py +1 -2
  211. mindsdb/integrations/handlers/questdb_handler/tests/test_questdb_handler.py +2 -3
  212. mindsdb/integrations/handlers/quickbooks_handler/quickbooks_handler.py +6 -8
  213. mindsdb/integrations/handlers/quickbooks_handler/quickbooks_table.py +10 -10
  214. mindsdb/integrations/handlers/rag_handler/ingest.py +2 -2
  215. mindsdb/integrations/handlers/rag_handler/rag_handler.py +1 -1
  216. mindsdb/integrations/handlers/rag_handler/settings.py +1 -1
  217. mindsdb/integrations/handlers/reddit_handler/reddit_handler.py +2 -7
  218. mindsdb/integrations/handlers/reddit_handler/reddit_tables.py +2 -3
  219. mindsdb/integrations/handlers/replicate_handler/replicate_handler.py +6 -6
  220. mindsdb/integrations/handlers/rocket_chat_handler/rocket_chat_handler.py +1 -2
  221. mindsdb/integrations/handlers/rocket_chat_handler/rocket_chat_tables.py +0 -3
  222. mindsdb/integrations/handlers/rockset_handler/connection_args.py +14 -14
  223. mindsdb/integrations/handlers/rockset_handler/tests/test_rockset_handler.py +1 -0
  224. mindsdb/integrations/handlers/scylla_handler/scylla_handler.py +6 -5
  225. mindsdb/integrations/handlers/sendinblue_handler/sendinblue_handler.py +2 -1
  226. mindsdb/integrations/handlers/sendinblue_handler/sendinblue_tables.py +16 -16
  227. mindsdb/integrations/handlers/sentence_transformers_handler/__init__.py +1 -1
  228. mindsdb/integrations/handlers/sheets_handler/connection_args.py +1 -1
  229. mindsdb/integrations/handlers/shopify_handler/shopify_handler.py +7 -6
  230. mindsdb/integrations/handlers/shopify_handler/shopify_tables.py +38 -41
  231. mindsdb/integrations/handlers/singlestore_handler/__about__.py +1 -1
  232. mindsdb/integrations/handlers/singlestore_handler/__init__.py +0 -1
  233. mindsdb/integrations/handlers/singlestore_handler/singlestore_handler.py +1 -0
  234. mindsdb/integrations/handlers/singlestore_handler/tests/test_singlestore_handler.py +3 -3
  235. mindsdb/integrations/handlers/slack_handler/__init__.py +3 -3
  236. mindsdb/integrations/handlers/snowflake_handler/snowflake_handler.py +100 -6
  237. mindsdb/integrations/handlers/solr_handler/connection_args.py +7 -7
  238. mindsdb/integrations/handlers/solr_handler/solr_handler.py +2 -1
  239. mindsdb/integrations/handlers/solr_handler/tests/test_solr_handler.py +2 -1
  240. mindsdb/integrations/handlers/sqlany_handler/sqlany_handler.py +3 -2
  241. mindsdb/integrations/handlers/sqlite_handler/sqlite_handler.py +1 -0
  242. mindsdb/integrations/handlers/sqreamdb_handler/connection_args.py +1 -1
  243. mindsdb/integrations/handlers/sqreamdb_handler/sqreamdb_handler.py +15 -20
  244. mindsdb/integrations/handlers/sqreamdb_handler/tests/test_sqreamdb_handler.py +4 -4
  245. mindsdb/integrations/handlers/stabilityai_handler/__init__.py +1 -1
  246. mindsdb/integrations/handlers/starrocks_handler/starrocks_handler.py +0 -1
  247. mindsdb/integrations/handlers/starrocks_handler/tests/test_starrocks_handler.py +8 -10
  248. mindsdb/integrations/handlers/statsforecast_handler/statsforecast_handler.py +2 -2
  249. mindsdb/integrations/handlers/strava_handler/strava_handler.py +4 -8
  250. mindsdb/integrations/handlers/strava_handler/strava_tables.py +22 -30
  251. mindsdb/integrations/handlers/stripe_handler/stripe_handler.py +3 -2
  252. mindsdb/integrations/handlers/stripe_handler/stripe_tables.py +11 -27
  253. mindsdb/integrations/handlers/supabase_handler/tests/test_supabase_handler.py +1 -1
  254. mindsdb/integrations/handlers/surrealdb_handler/surrealdb_handler.py +4 -4
  255. mindsdb/integrations/handlers/tdengine_handler/tdengine_handler.py +25 -27
  256. mindsdb/integrations/handlers/tdengine_handler/tests/test_tdengine_handler.py +8 -8
  257. mindsdb/integrations/handlers/tidb_handler/tests/test_tidb_handler.py +1 -2
  258. mindsdb/integrations/handlers/timegpt_handler/timegpt_handler.py +5 -5
  259. mindsdb/integrations/handlers/tpot_handler/tpot_handler.py +21 -26
  260. mindsdb/integrations/handlers/trino_handler/trino_handler.py +14 -14
  261. mindsdb/integrations/handlers/twitter_handler/twitter_handler.py +2 -4
  262. mindsdb/integrations/handlers/unify_handler/tests/test_unify_handler.py +7 -8
  263. mindsdb/integrations/handlers/unify_handler/unify_handler.py +9 -9
  264. mindsdb/integrations/handlers/vertex_handler/vertex_client.py +1 -1
  265. mindsdb/integrations/handlers/vertica_handler/tests/test_vertica_handler.py +11 -11
  266. mindsdb/integrations/handlers/vertica_handler/vertica_handler.py +11 -14
  267. mindsdb/integrations/handlers/vitess_handler/tests/test_vitess_handler.py +9 -11
  268. mindsdb/integrations/handlers/vitess_handler/vitess_handler.py +0 -1
  269. mindsdb/integrations/handlers/web_handler/web_handler.py +1 -0
  270. mindsdb/integrations/handlers/whatsapp_handler/__init__.py +3 -3
  271. mindsdb/integrations/handlers/writer_handler/evaluate.py +1 -1
  272. mindsdb/integrations/handlers/writer_handler/settings.py +0 -1
  273. mindsdb/integrations/handlers/writer_handler/writer_handler.py +1 -0
  274. mindsdb/integrations/handlers/youtube_handler/youtube_handler.py +5 -5
  275. mindsdb/integrations/handlers/youtube_handler/youtube_tables.py +26 -27
  276. mindsdb/integrations/handlers/yugabyte_handler/tests/test_yugabyte_handler.py +3 -3
  277. mindsdb/integrations/handlers/yugabyte_handler/yugabyte_handler.py +0 -6
  278. mindsdb/integrations/libs/response.py +67 -52
  279. mindsdb/integrations/libs/vectordatabase_handler.py +6 -0
  280. mindsdb/integrations/utilities/handler_utils.py +15 -3
  281. mindsdb/integrations/utilities/handlers/api_utilities/__init__.py +0 -1
  282. mindsdb/integrations/utilities/handlers/auth_utilities/__init__.py +0 -2
  283. mindsdb/integrations/utilities/utils.py +3 -3
  284. mindsdb/interfaces/agents/agents_controller.py +164 -1
  285. mindsdb/interfaces/agents/constants.py +15 -0
  286. mindsdb/interfaces/agents/langchain_agent.py +16 -4
  287. mindsdb/interfaces/agents/mindsdb_database_agent.py +101 -2
  288. mindsdb/interfaces/knowledge_base/controller.py +25 -0
  289. mindsdb/interfaces/knowledge_base/preprocessing/document_preprocessor.py +13 -10
  290. mindsdb/interfaces/knowledge_base/preprocessing/json_chunker.py +434 -0
  291. mindsdb/interfaces/knowledge_base/preprocessing/models.py +54 -0
  292. mindsdb/interfaces/query_context/context_controller.py +66 -10
  293. mindsdb/interfaces/skills/custom/text2sql/mindsdb_kb_tools.py +190 -0
  294. mindsdb/interfaces/skills/custom/text2sql/mindsdb_sql_toolkit.py +92 -0
  295. mindsdb/interfaces/skills/skill_tool.py +202 -57
  296. mindsdb/interfaces/skills/sql_agent.py +205 -17
  297. mindsdb/interfaces/storage/fs.py +1 -0
  298. mindsdb/interfaces/variables/__init__.py +0 -0
  299. mindsdb/interfaces/variables/variables_controller.py +97 -0
  300. mindsdb/migrations/env.py +5 -7
  301. mindsdb/migrations/migrate.py +47 -7
  302. mindsdb/migrations/versions/2025-05-21_9f150e4f9a05_checkpoint_1.py +360 -0
  303. mindsdb/utilities/config.py +331 -219
  304. mindsdb/utilities/starters.py +13 -0
  305. {mindsdb-25.5.3.0.dist-info → mindsdb-25.5.4.0.dist-info}/METADATA +641 -695
  306. {mindsdb-25.5.3.0.dist-info → mindsdb-25.5.4.0.dist-info}/RECORD +309 -288
  307. {mindsdb-25.5.3.0.dist-info → mindsdb-25.5.4.0.dist-info}/WHEEL +1 -1
  308. mindsdb/integrations/handlers/monkeylearn_handler/requirements.txt +0 -1
  309. {mindsdb-25.5.3.0.dist-info → mindsdb-25.5.4.0.dist-info}/licenses/LICENSE +0 -0
  310. {mindsdb-25.5.3.0.dist-info → mindsdb-25.5.4.0.dist-info}/top_level.txt +0 -0
@@ -28,7 +28,7 @@ class MSGraphAPITeamsClient(MSGraphAPIBaseClient, ABC):
28
28
  except RequestException as request_error:
29
29
  logger.error(f"Failed to check connection to Microsoft Teams: {request_error}")
30
30
  return False
31
-
31
+
32
32
  def get_teams(self) -> List[Dict]:
33
33
  """
34
34
  Get teams from Microsoft Teams.
@@ -37,7 +37,7 @@ class MSGraphAPITeamsClient(MSGraphAPIBaseClient, ABC):
37
37
  List[Dict]: The teams data.
38
38
  """
39
39
  return self._get_all_groups()
40
-
40
+
41
41
  def get_channels(self, group_id: Text = None, channel_ids: List[Text] = None) -> List[Dict]:
42
42
  """
43
43
  Get channels from Microsoft Teams.
@@ -57,7 +57,7 @@ class MSGraphAPITeamsClient(MSGraphAPIBaseClient, ABC):
57
57
  return self._get_channels_across_all_groups_by_ids(channel_ids)
58
58
  else:
59
59
  return self._get_all_channels_across_all_groups()
60
-
60
+
61
61
  def get_channel_messages(self, group_id: Text, channel_id: Text, message_ids: List[Text] = None) -> List[Dict]:
62
62
  """
63
63
  Get channel messages from Microsoft Teams.
@@ -74,7 +74,7 @@ class MSGraphAPITeamsClient(MSGraphAPIBaseClient, ABC):
74
74
  return self._get_messages_in_channel_by_ids(group_id, channel_id, message_ids)
75
75
  else:
76
76
  return self._get_all_messages_in_channel(group_id, channel_id)
77
-
77
+
78
78
  def get_chats(self, chat_ids: List[Text] = None) -> List[Dict]:
79
79
  """
80
80
  Get chats from Microsoft Teams.
@@ -89,7 +89,7 @@ class MSGraphAPITeamsClient(MSGraphAPIBaseClient, ABC):
89
89
  return self._get_chats_by_ids(chat_ids)
90
90
  else:
91
91
  return self._get_all_chats()
92
-
92
+
93
93
  def get_chat_messages(self, chat_id: Text, message_ids: List[Text] = None) -> List[Dict]:
94
94
  """
95
95
  Get chat messages from Microsoft Teams.
@@ -118,7 +118,7 @@ class MSGraphAPITeamsClient(MSGraphAPIBaseClient, ABC):
118
118
  self._group_ids = [group["id"] for group in groups]
119
119
 
120
120
  return self._group_ids
121
-
121
+
122
122
  @abstractmethod
123
123
  def _get_all_groups(self) -> List[Dict]:
124
124
  """
@@ -198,7 +198,7 @@ class MSGraphAPITeamsClient(MSGraphAPIBaseClient, ABC):
198
198
  channel.update({"teamId": group_id})
199
199
 
200
200
  return channel
201
-
201
+
202
202
  def _get_channels_in_group_by_ids(self, group_id: Text, channel_ids: List[Text]) -> List[Dict]:
203
203
  """
204
204
  Get channels by their IDs and the ID of the group that they belong to.
@@ -215,7 +215,7 @@ class MSGraphAPITeamsClient(MSGraphAPIBaseClient, ABC):
215
215
  channels.append(self._get_channel_in_group_by_id(group_id, channel_id))
216
216
 
217
217
  return channels
218
-
218
+
219
219
  def _get_all_channels_in_group(self, group_id: Text) -> List[Dict]:
220
220
  """
221
221
  Get all channels of a group by its ID.
@@ -231,7 +231,7 @@ class MSGraphAPITeamsClient(MSGraphAPIBaseClient, ABC):
231
231
  channel["teamId"] = group_id
232
232
 
233
233
  return channels
234
-
234
+
235
235
  def _get_all_channels_across_all_groups(self) -> List[Dict]:
236
236
  """
237
237
  Get all channels across all groups related to Microsoft Teams.
@@ -244,7 +244,7 @@ class MSGraphAPITeamsClient(MSGraphAPIBaseClient, ABC):
244
244
  channels += self._get_all_channels_in_group(group_id)
245
245
 
246
246
  return channels
247
-
247
+
248
248
  def _get_channels_across_all_groups_by_ids(self, channel_ids: List[Text]) -> List[Dict]:
249
249
  """
250
250
  Get channels by their IDs.
@@ -258,7 +258,7 @@ class MSGraphAPITeamsClient(MSGraphAPIBaseClient, ABC):
258
258
  channels = self._get_all_channels_across_all_groups()
259
259
 
260
260
  return [channel for channel in channels if channel["id"] in channel_ids]
261
-
261
+
262
262
  def _get_message_in_channel_by_id(self, group_id: Text, channel_id: Text, message_id: Text) -> Dict:
263
263
  """
264
264
  Get a message by its ID, the ID of the group that it belongs to, and the ID of the channel that it belongs to.
@@ -272,7 +272,7 @@ class MSGraphAPITeamsClient(MSGraphAPIBaseClient, ABC):
272
272
  Dict: The message data.
273
273
  """
274
274
  return self.fetch_data_json(f"teams/{group_id}/channels/{channel_id}/messages/{message_id}")
275
-
275
+
276
276
  def _get_messages_in_channel_by_ids(self, group_id: Text, channel_id: Text, message_ids: List[Text]) -> List[Dict]:
277
277
  """
278
278
  Get messages by their IDs, the ID of the group that they belong to, and the ID of the channel that they belong to.
@@ -310,7 +310,7 @@ class MSGraphAPITeamsClient(MSGraphAPIBaseClient, ABC):
310
310
  break
311
311
 
312
312
  return messages[:limit]
313
-
313
+
314
314
  def _get_chats_by_ids(self, chat_ids: List[Text]) -> List[Dict]:
315
315
  """
316
316
  Get chats by their IDs.
@@ -326,7 +326,7 @@ class MSGraphAPITeamsClient(MSGraphAPIBaseClient, ABC):
326
326
  chats.append(self._get_chat_by_id(chat_id))
327
327
 
328
328
  return chats
329
-
329
+
330
330
  def _get_messages_in_chat_by_ids(self, chat_id: Text, message_ids: List[Text]) -> List[Dict]:
331
331
  """
332
332
  Get messages by their IDs and the ID of the chat that they belong to.
@@ -351,7 +351,7 @@ class MSGraphAPITeamsApplicationPermissionsClient(MSGraphAPITeamsClient):
351
351
  This client is used for accessing the Microsoft Teams specific endpoints of the Microsoft Graph API.
352
352
  Several common methods for submitting requests, fetching data, etc. are inherited from the base class.
353
353
  """
354
-
354
+
355
355
  def _get_all_groups(self) -> List[Dict]:
356
356
  """
357
357
  Get all groups related to Microsoft Teams.
@@ -363,7 +363,7 @@ class MSGraphAPITeamsApplicationPermissionsClient(MSGraphAPITeamsClient):
363
363
  "/groups",
364
364
  params={"$filter": "resourceProvisioningOptions/Any(x:x eq 'Team')"}
365
365
  )
366
-
366
+
367
367
  def _get_chat_by_id(self, chat_id: Text) -> Dict:
368
368
  """
369
369
  Get a chat by its ID.
@@ -375,7 +375,7 @@ class MSGraphAPITeamsApplicationPermissionsClient(MSGraphAPITeamsClient):
375
375
  Dict: The chat data.
376
376
  """
377
377
  return self.fetch_data_json(f"chats/{chat_id}")
378
-
378
+
379
379
  def _get_all_chats(self, limit: int = None) -> List[Dict]:
380
380
  """
381
381
  Get all chats related to Microsoft Teams.
@@ -400,7 +400,7 @@ class MSGraphAPITeamsApplicationPermissionsClient(MSGraphAPITeamsClient):
400
400
  Dict: The message data.
401
401
  """
402
402
  return self.fetch_data_json(f"chats/{chat_id}/messages/{message_id}")
403
-
403
+
404
404
  def _get_all_messages_in_chat(self, chat_id: Text, limit: int = None) -> List[Dict]:
405
405
  """
406
406
  Get messages of a chat by its ID.
@@ -421,13 +421,13 @@ class MSGraphAPITeamsApplicationPermissionsClient(MSGraphAPITeamsClient):
421
421
  return messages[:limit]
422
422
 
423
423
 
424
- class MSGraphAPITeamsDelegatedPermissionsClient(MSGraphAPITeamsClient):
424
+ class MSGraphAPITeamsDelegatedPermissionsClient(MSGraphAPITeamsClient):
425
425
  """
426
426
  The Microsoft Graph API client for the Microsoft Teams handler with delegated permissions.
427
427
  This client is used for accessing the Microsoft Teams specific endpoints of the Microsoft Graph API.
428
428
  Several common methods for submitting requests, fetching data, etc. are inherited from the base class.
429
429
  """
430
-
430
+
431
431
  def _get_all_groups(self) -> List[Dict]:
432
432
  """
433
433
  Get all groups that the signed in user is a member of.
@@ -436,7 +436,7 @@ class MSGraphAPITeamsDelegatedPermissionsClient(MSGraphAPITeamsClient):
436
436
  List[Dict]: The groups data.
437
437
  """
438
438
  return self.fetch_data_json("me/joinedTeams")
439
-
439
+
440
440
  def _get_chat_by_id(self, chat_id: Text) -> Dict:
441
441
  """
442
442
  Get a chat by its ID.
@@ -467,7 +467,7 @@ class MSGraphAPITeamsDelegatedPermissionsClient(MSGraphAPITeamsClient):
467
467
  break
468
468
 
469
469
  return chats[:limit]
470
-
470
+
471
471
  def _get_message_in_chat_by_id(self, chat_id: Text, message_id: Text) -> Dict:
472
472
  """
473
473
  Get a message by its ID and the ID of the chat that it belongs to.
@@ -480,7 +480,7 @@ class MSGraphAPITeamsDelegatedPermissionsClient(MSGraphAPITeamsClient):
480
480
  Dict: The message data.
481
481
  """
482
482
  return self.fetch_data_json(f"me/chats/{chat_id}/messages/{message_id}")
483
-
483
+
484
484
  def _get_all_messages_in_chat(self, chat_id: Text, limit: int = None) -> List[Dict]:
485
485
  """
486
486
  Get messages of a chat by its ID.
@@ -1,4 +1,4 @@
1
- from typing import Callable, Dict, Text, Callable, Union
1
+ from typing import Dict, Text, Callable, Union
2
2
 
3
3
  from botbuilder.schema import Activity, ActivityTypes
4
4
  from botbuilder.schema import ChannelAccount
@@ -19,7 +19,7 @@ from mindsdb.integrations.libs.response import (
19
19
  HandlerStatusResponse as StatusResponse,
20
20
  )
21
21
  from mindsdb.integrations.libs.api_handler import APIChatHandler
22
- from mindsdb.integrations.utilities.handlers.auth_utilities import (
22
+ from mindsdb.integrations.utilities.handlers.auth_utilities.microsoft import (
23
23
  MSGraphAPIApplicationPermissionsManager,
24
24
  MSGraphAPIDelegatedPermissionsManager
25
25
  )
@@ -233,7 +233,7 @@ class MSTeamsHandler(APIChatHandler):
233
233
  callback(
234
234
  chat_id=request['conversation']['id'],
235
235
  message=chat_bot_message
236
- )
236
+ )
237
237
 
238
238
  @chatbot_only
239
239
  def respond(self, message: ChatBotMessage) -> None:
@@ -15,6 +15,7 @@ class TeamsTable(APIResource):
15
15
  """
16
16
  The table abstraction for the 'teams' resource of the Microsoft Graph API.
17
17
  """
18
+
18
19
  def list(
19
20
  self,
20
21
  conditions: List[FilterCondition] = None,
@@ -67,6 +68,7 @@ class ChannelsTable(APIResource):
67
68
  """
68
69
  The table abstraction for the 'channels' resource of the Microsoft Graph API.
69
70
  """
71
+
70
72
  def list(
71
73
  self,
72
74
  conditions: List[FilterCondition] = None,
@@ -146,6 +148,7 @@ class ChannelMessagesTable(APIResource):
146
148
  """
147
149
  The table abstraction for the 'channel messages' resource of the Microsoft Graph API.
148
150
  """
151
+
149
152
  def list(
150
153
  self,
151
154
  conditions: List[FilterCondition] = None,
@@ -206,7 +209,7 @@ class ChannelMessagesTable(APIResource):
206
209
 
207
210
  if not group_id or not channel_id:
208
211
  raise ValueError("The 'channelIdentity_teamId' and 'channelIdentity_channelId' columns are required.")
209
-
212
+
210
213
  messages = client.get_channel_messages(group_id, channel_id, message_ids)
211
214
 
212
215
  messages_df = pd.json_normalize(messages, sep="_")
@@ -247,12 +250,13 @@ class ChannelMessagesTable(APIResource):
247
250
  "channelIdentity_teamId",
248
251
  "channelIdentity_channelId",
249
252
  ]
250
-
253
+
251
254
 
252
255
  class ChatsTable(APIResource):
253
256
  """
254
257
  The table abstraction for the 'chats' resource of the Microsoft Graph API.
255
258
  """
259
+
256
260
  def list(
257
261
  self,
258
262
  conditions: List[FilterCondition] = None,
@@ -312,12 +316,13 @@ class ChatsTable(APIResource):
312
316
  "webUrl",
313
317
  "isHiddenForAllMembers"
314
318
  ]
315
-
319
+
316
320
 
317
321
  class ChatMessagesTable(APIResource):
318
322
  """
319
323
  The table abstraction for the 'chat messages' resource of the Microsoft Graph API.
320
324
  """
325
+
321
326
  def list(
322
327
  self,
323
328
  conditions: List[FilterCondition] = None,
@@ -367,7 +372,7 @@ class ChatMessagesTable(APIResource):
367
372
 
368
373
  if not chat_id:
369
374
  raise ValueError("The 'chatId' column is required.")
370
-
375
+
371
376
  messages = client.get_chat_messages(chat_id, message_ids)
372
377
 
373
378
  messages_df = pd.json_normalize(messages, sep="_")
@@ -405,4 +410,4 @@ class ChatMessagesTable(APIResource):
405
410
  "from_user_userIdentityType",
406
411
  "body_contentType",
407
412
  "body_content",
408
- ]
413
+ ]
@@ -1,6 +1,10 @@
1
+ from typing import Any
2
+ import datetime
3
+
1
4
  import pymssql
2
5
  from pymssql import OperationalError
3
6
  import pandas as pd
7
+ from pandas.api import types as pd_types
4
8
 
5
9
  from mindsdb_sql_parser import parse_sql
6
10
  from mindsdb_sql_parser.ast.base import ASTNode
@@ -46,10 +50,77 @@ def _map_type(mssql_type_text: str) -> MYSQL_DATA_TYPE:
46
50
  if internal_type_name in db_types_list:
47
51
  return mysql_data_type
48
52
 
49
- logger.warning(f"MSSQL handler type mapping: unknown type: {internal_type_name}, use VARCHAR as fallback.")
53
+ logger.debug(f"MSSQL handler type mapping: unknown type: {internal_type_name}, use VARCHAR as fallback.")
50
54
  return MYSQL_DATA_TYPE.VARCHAR
51
55
 
52
56
 
57
+ def _make_table_response(result: list[dict[str, Any]], cursor: pymssql.Cursor) -> Response:
58
+ """Build response from result and cursor.
59
+
60
+ Args:
61
+ result (list[dict[str, Any]]): result of the query.
62
+ cursor (pymssql.Cursor): cursor object.
63
+
64
+ Returns:
65
+ Response: response object.
66
+ """
67
+ description: list[tuple[Any]] = cursor.description
68
+ mysql_types: list[MYSQL_DATA_TYPE] = []
69
+
70
+ data_frame = pd.DataFrame(
71
+ result,
72
+ columns=[x[0] for x in cursor.description]
73
+ )
74
+
75
+ for column in description:
76
+ column_name = column[0]
77
+ column_type = column[1]
78
+ column_dtype = data_frame[column_name].dtype
79
+ match column_type:
80
+ case pymssql.NUMBER:
81
+ if pd_types.is_integer_dtype(column_dtype):
82
+ mysql_types.append(MYSQL_DATA_TYPE.INT)
83
+ elif pd_types.is_float_dtype(column_dtype):
84
+ mysql_types.append(MYSQL_DATA_TYPE.FLOAT)
85
+ elif pd_types.is_bool_dtype(column_dtype):
86
+ # it is 'bit' type
87
+ mysql_types.append(MYSQL_DATA_TYPE.TINYINT)
88
+ else:
89
+ mysql_types.append(MYSQL_DATA_TYPE.DOUBLE)
90
+ case pymssql.DECIMAL:
91
+ mysql_types.append(MYSQL_DATA_TYPE.DECIMAL)
92
+ case pymssql.STRING:
93
+ mysql_types.append(MYSQL_DATA_TYPE.TEXT)
94
+ case pymssql.DATETIME:
95
+ mysql_types.append(MYSQL_DATA_TYPE.DATETIME)
96
+ case pymssql.BINARY:
97
+ # DATE and TIME types returned as 'BINARY' type, and dataframe type is 'object', so it is not possible
98
+ # to infer correct mysql type for them
99
+ if pd_types.is_datetime64_any_dtype(column_dtype):
100
+ # pymssql return datetimes as 'binary' type
101
+ # if timezone is present, then it is datetime.timezone
102
+ series = data_frame[column_name]
103
+ if (
104
+ series.dt.tz is not None
105
+ and isinstance(series.dt.tz, datetime.timezone)
106
+ and series.dt.tz != datetime.timezone.utc
107
+ ):
108
+ series = series.dt.tz_convert('UTC')
109
+ data_frame[column_name] = series.dt.tz_localize(None)
110
+ mysql_types.append(MYSQL_DATA_TYPE.DATETIME)
111
+ else:
112
+ mysql_types.append(MYSQL_DATA_TYPE.BINARY)
113
+ case _:
114
+ logger.warning(f"Unknown type: {column_type}, use TEXT as fallback.")
115
+ mysql_types.append(MYSQL_DATA_TYPE.TEXT)
116
+
117
+ return Response(
118
+ RESPONSE_TYPE.TABLE,
119
+ data_frame=data_frame,
120
+ mysql_types=mysql_types
121
+ )
122
+
123
+
53
124
  class SqlServerHandler(DatabaseHandler):
54
125
  """
55
126
  This handler handles connection and execution of the Microsoft SQL Server statements.
@@ -169,13 +240,7 @@ class SqlServerHandler(DatabaseHandler):
169
240
  cur.execute(query)
170
241
  if cur.description:
171
242
  result = cur.fetchall()
172
- response = Response(
173
- RESPONSE_TYPE.TABLE,
174
- data_frame=pd.DataFrame(
175
- result,
176
- columns=[x[0] for x in cur.description]
177
- )
178
- )
243
+ response = _make_table_response(result, cur)
179
244
  else:
180
245
  response = Response(RESPONSE_TYPE.OK, affected_rows=cur.rowcount)
181
246
  connection.commit()
@@ -1,9 +1,9 @@
1
- __title__ = 'MindsDB MySQL handler'
2
- __package_name__ = 'mindsdb_mysql_handler'
3
- __version__ = '0.0.1'
1
+ __title__ = "MindsDB MySQL handler"
2
+ __package_name__ = "mindsdb_mysql_handler"
3
+ __version__ = "0.0.1"
4
4
  __description__ = "MindsDB handler for MySQL"
5
- __author__ = 'MindsDB Inc'
6
- __github__ = 'https://github.com/mindsdb/mindsdb'
7
- __pypi__ = 'https://pypi.org/project/mindsdb/'
8
- __license__ = 'MIT'
9
- __copyright__ = 'Copyright 2022- mindsdb'
5
+ __author__ = "MindsDB Inc"
6
+ __github__ = "https://github.com/mindsdb/mindsdb"
7
+ __pypi__ = "https://pypi.org/project/mindsdb/"
8
+ __license__ = "MIT"
9
+ __copyright__ = "Copyright 2022- mindsdb"
@@ -2,19 +2,29 @@ from mindsdb.integrations.libs.const import HANDLER_TYPE
2
2
 
3
3
  from .__about__ import __version__ as version, __description__ as description
4
4
  from .connection_args import connection_args, connection_args_example
5
+
5
6
  try:
6
7
  from .mysql_handler import MySQLHandler as Handler
8
+
7
9
  import_error = None
8
10
  except Exception as e:
9
11
  Handler = None
10
12
  import_error = e
11
13
 
12
- title = 'MySQL'
13
- name = 'mysql'
14
+ title = "MySQL"
15
+ name = "mysql"
14
16
  type = HANDLER_TYPE.DATA
15
- icon_path = 'icon.svg'
17
+ icon_path = "icon.svg"
16
18
 
17
19
  __all__ = [
18
- 'Handler', 'version', 'name', 'type', 'title', 'description',
19
- 'connection_args', 'connection_args_example', 'import_error', 'icon_path'
20
+ "Handler",
21
+ "version",
22
+ "name",
23
+ "type",
24
+ "title",
25
+ "description",
26
+ "connection_args",
27
+ "connection_args_example",
28
+ "import_error",
29
+ "icon_path",
20
30
  ]
@@ -5,72 +5,68 @@ from mindsdb.integrations.libs.const import HANDLER_CONNECTION_ARG_TYPE as ARG_T
5
5
 
6
6
  connection_args = OrderedDict(
7
7
  url={
8
- 'type': ARG_TYPE.STR,
9
- 'description': 'The URI-Like connection string to the MySQL server. If provided, it will override the other connection arguments.',
10
- 'required': False,
11
- 'label': 'URL'
8
+ "type": ARG_TYPE.STR,
9
+ "description": "The URI-Like connection string to the MySQL server. If provided, it will override the other connection arguments.",
10
+ "required": False,
11
+ "label": "URL",
12
12
  },
13
13
  user={
14
- 'type': ARG_TYPE.STR,
15
- 'description': 'The user name used to authenticate with the MySQL server.',
16
- 'required': True,
17
- 'label': 'User'
14
+ "type": ARG_TYPE.STR,
15
+ "description": "The user name used to authenticate with the MySQL server.",
16
+ "required": True,
17
+ "label": "User",
18
18
  },
19
19
  password={
20
- 'type': ARG_TYPE.PWD,
21
- 'description': 'The password to authenticate the user with the MySQL server.',
22
- 'required': True,
23
- 'label': 'Password',
24
- 'secret': True
20
+ "type": ARG_TYPE.PWD,
21
+ "description": "The password to authenticate the user with the MySQL server.",
22
+ "required": True,
23
+ "label": "Password",
24
+ "secret": True,
25
25
  },
26
26
  database={
27
- 'type': ARG_TYPE.STR,
28
- 'description': 'The database name to use when connecting with the MySQL server.',
29
- 'required': True,
30
- 'label': 'Database'
27
+ "type": ARG_TYPE.STR,
28
+ "description": "The database name to use when connecting with the MySQL server.",
29
+ "required": True,
30
+ "label": "Database",
31
31
  },
32
32
  host={
33
- 'type': ARG_TYPE.STR,
34
- 'description': 'The host name or IP address of the MySQL server. NOTE: use \'127.0.0.1\' instead of \'localhost\' to connect to local server.',
35
- 'required': True,
36
- 'label': 'Host'
33
+ "type": ARG_TYPE.STR,
34
+ "description": "The host name or IP address of the MySQL server. NOTE: use '127.0.0.1' instead of 'localhost' to connect to local server.",
35
+ "required": True,
36
+ "label": "Host",
37
37
  },
38
38
  port={
39
- 'type': ARG_TYPE.INT,
40
- 'description': 'The TCP/IP port of the MySQL server. Must be an integer.',
41
- 'required': True,
42
- 'label': 'Port'
39
+ "type": ARG_TYPE.INT,
40
+ "description": "The TCP/IP port of the MySQL server. Must be an integer.",
41
+ "required": True,
42
+ "label": "Port",
43
43
  },
44
44
  ssl={
45
- 'type': ARG_TYPE.BOOL,
46
- 'description': 'Set it to True to enable ssl.',
47
- 'required': False,
48
- 'label': 'ssl'
45
+ "type": ARG_TYPE.BOOL,
46
+ "description": "Set it to True to enable ssl.",
47
+ "required": False,
48
+ "label": "ssl",
49
49
  },
50
50
  ssl_ca={
51
- 'type': ARG_TYPE.PATH,
52
- 'description': 'Path or URL of the Certificate Authority (CA) certificate file',
53
- 'required': False,
54
- 'label': 'ssl_ca'
51
+ "type": ARG_TYPE.PATH,
52
+ "description": "Path or URL of the Certificate Authority (CA) certificate file",
53
+ "required": False,
54
+ "label": "ssl_ca",
55
55
  },
56
56
  ssl_cert={
57
- 'type': ARG_TYPE.PATH,
58
- 'description': 'Path name or URL of the server public key certificate file',
59
- 'required': False,
60
- 'label': 'ssl_cert'
57
+ "type": ARG_TYPE.PATH,
58
+ "description": "Path name or URL of the server public key certificate file",
59
+ "required": False,
60
+ "label": "ssl_cert",
61
61
  },
62
62
  ssl_key={
63
- 'type': ARG_TYPE.PATH,
64
- 'description': 'The path name or URL of the server private key file',
65
- 'required': False,
66
- 'label': 'ssl_key',
67
- }
63
+ "type": ARG_TYPE.PATH,
64
+ "description": "The path name or URL of the server private key file",
65
+ "required": False,
66
+ "label": "ssl_key",
67
+ },
68
68
  )
69
69
 
70
70
  connection_args_example = OrderedDict(
71
- host='127.0.0.1',
72
- port=3306,
73
- user='root',
74
- password='password',
75
- database='database'
71
+ host="127.0.0.1", port=3306, user="root", password="password", database="database"
76
72
  )