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
@@ -14,15 +14,14 @@ from mindsdb.integrations.libs.response import (
14
14
  import pandas as pd
15
15
  import pysqream as db
16
16
 
17
- from pysqream_sqlalchemy.dialect import SqreamDialect
17
+ from pysqream_sqlalchemy.dialect import SqreamDialect
18
18
 
19
19
  logger = log.getLogger(__name__)
20
20
 
21
21
 
22
22
  class SQreamDBHandler(DatabaseHandler):
23
23
 
24
-
25
- name= 'sqreamdb'
24
+ name = 'sqreamdb'
26
25
 
27
26
  def __init__(self, name: str, connection_data: Optional[dict], **kwargs):
28
27
  """ Initialize the handler
@@ -32,34 +31,30 @@ class SQreamDBHandler(DatabaseHandler):
32
31
  **kwargs: arbitrary keyword arguments.
33
32
  """
34
33
  super().__init__(name)
35
-
36
-
34
+
37
35
  self.connection_data = connection_data
38
36
 
39
37
  self.connection = None
40
38
  self.is_connected = False
41
-
42
-
39
+
43
40
  def connect(self):
44
41
  """
45
42
  Handles the connection to a YugabyteSQL database insance.
46
43
  """
47
44
  if self.is_connected is True:
48
45
  return self.connection
49
-
50
- args={
46
+
47
+ args = {
51
48
  "database": self.connection_data.get('database'),
52
49
  "host": self.connection_data.get('host'),
53
50
  "port": self.connection_data.get('port'),
54
51
  "username": self.connection_data.get('user'),
55
52
  "password": self.connection_data.get('password'),
56
- "clustered":self.connection_data.get('clustered',False),
57
- "use_ssl":self.connection_data.get('use_ssl',False),
58
- "service":self.connection_data.get('service','sqream')
53
+ "clustered": self.connection_data.get('clustered', False),
54
+ "use_ssl": self.connection_data.get('use_ssl', False),
55
+ "service": self.connection_data.get('service', 'sqream')
59
56
  }
60
57
 
61
-
62
-
63
58
  connection = db.connect(**args)
64
59
 
65
60
  self.is_connected = True
@@ -103,9 +98,9 @@ class SQreamDBHandler(DatabaseHandler):
103
98
  with conn.cursor() as cur:
104
99
  try:
105
100
  cur.execute(query)
106
-
107
- if cur.rowcount >0 and query.upper().startswith('SELECT') :
108
- result = cur.fetchall()
101
+
102
+ if cur.rowcount > 0 and query.upper().startswith('SELECT'):
103
+ result = cur.fetchall()
109
104
  response = Response(
110
105
  RESPONSE_TYPE.TABLE,
111
106
  data_frame=pd.DataFrame(
@@ -139,7 +134,7 @@ class SQreamDBHandler(DatabaseHandler):
139
134
 
140
135
  def get_tables(self) -> Response:
141
136
  """
142
- List all tables in SQreamDB stored in 'sqream_catalog'
137
+ List all tables in SQreamDB stored in 'sqream_catalog'
143
138
  """
144
139
 
145
140
  query = "SELECT table_name FROM sqream_catalog.tables"
@@ -147,8 +142,8 @@ class SQreamDBHandler(DatabaseHandler):
147
142
  return self.query(query)
148
143
 
149
144
  def get_columns(self, table_name):
150
- query = f"""SELECT column_name, type_name
151
- FROM sqream_catalog.columns
145
+ query = f"""SELECT column_name, type_name
146
+ FROM sqream_catalog.columns
152
147
  WHERE table_name = '{table_name}';
153
148
  """
154
149
  return self.query(query)
@@ -31,15 +31,15 @@ class SQreamDBHandlerTest(unittest.TestCase):
31
31
  def test_3_get_tables(self):
32
32
  tables = self.handler.get_tables()
33
33
  assert tables.type is not RESPONSE_TYPE.ERROR
34
-
34
+
35
35
  def test_4_select_query(self):
36
36
  query = "SELECT * FROM AUTHORS"
37
37
  result = self.handler.native_query(query)
38
38
  assert result.type is RESPONSE_TYPE.TABLE
39
39
 
40
40
  def test_5_check_connection(self):
41
- self.handler.check_connection()
41
+ self.handler.check_connection()
42
+
42
43
 
43
-
44
44
  if __name__ == '__main__':
45
- unittest.main()
45
+ unittest.main()
@@ -16,4 +16,4 @@ permanent = False
16
16
 
17
17
  __all__ = [
18
18
  'Handler', 'version', 'name', 'type', 'title', 'description', 'import_error', 'icon_path'
19
- ]
19
+ ]
@@ -15,7 +15,6 @@ class StarRocksHandler(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,
@@ -2,6 +2,7 @@ import unittest
2
2
  from mindsdb.integrations.handlers.starrocks_handler.starrocks_handler import StarRocksHandler
3
3
  from mindsdb.integrations.libs.response import RESPONSE_TYPE
4
4
 
5
+
5
6
  class StarRocksHandlerTest(unittest.TestCase):
6
7
  @classmethod
7
8
  def setUpClass(cls):
@@ -21,36 +22,33 @@ class StarRocksHandlerTest(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
-
@@ -99,7 +99,7 @@ class StatsForecastHandler(BaseMLEngine):
99
99
  time_settings = args["timeseries_settings"]
100
100
  using_args = args["using"]
101
101
  assert time_settings["is_timeseries"], "Specify time series settings in your query"
102
- ###### store model args and time series settings in the model folder
102
+ # store model args and time series settings in the model folder
103
103
  model_args = {}
104
104
  model_args.update(using_args)
105
105
  model_args["target"] = target
@@ -130,7 +130,7 @@ class StatsForecastHandler(BaseMLEngine):
130
130
  sf = StatsForecast([model], freq=model_args["frequency"], df=training_df)
131
131
  fitted_models = sf.fit().fitted_
132
132
 
133
- ###### persist changes to handler folder
133
+ # persist changes to handler folder
134
134
  self.model_storage.json_set("model_args", model_args)
135
135
  self.model_storage.file_set("training_df", dill.dumps(training_df))
136
136
  self.model_storage.file_set("fitted_models", dill.dumps(fitted_models))
@@ -7,9 +7,6 @@ from mindsdb.integrations.libs.response import (
7
7
  from mindsdb.utilities import log
8
8
  from mindsdb_sql_parser import parse_sql
9
9
 
10
- import requests
11
- import pandas as pd
12
- import json
13
10
  from collections import OrderedDict
14
11
  from mindsdb.integrations.libs.const import HANDLER_CONNECTION_ARG_TYPE as ARG_TYPE
15
12
 
@@ -17,6 +14,7 @@ from stravalib.client import Client
17
14
 
18
15
  logger = log.getLogger(__name__)
19
16
 
17
+
20
18
  class StravaHandler(APIHandler):
21
19
  """Strava handler implementation"""
22
20
 
@@ -39,7 +37,7 @@ class StravaHandler(APIHandler):
39
37
 
40
38
  strava_all_clubs_data = StravaAllClubsTable(self)
41
39
  self._register_table("all_clubs", strava_all_clubs_data)
42
-
40
+
43
41
  strava_club_activites_data = StravaClubActivitesTable(self)
44
42
  self._register_table("club_activities", strava_club_activites_data)
45
43
 
@@ -54,7 +52,6 @@ class StravaHandler(APIHandler):
54
52
  return self.connection
55
53
 
56
54
  client = Client()
57
- url = client.authorization_url(client_id=self.connection_data['strava_client_id'], redirect_uri='http://127.0.0.1:5000/authorization')
58
55
  client.access_token = self.connection_data['strava_access_token']
59
56
  self.connection = client
60
57
 
@@ -68,7 +65,6 @@ class StravaHandler(APIHandler):
68
65
  Status confirmation
69
66
  """
70
67
  response = StatusResponse(False)
71
- need_to_close = self.is_connected is False
72
68
 
73
69
  try:
74
70
  self.connect()
@@ -108,6 +104,6 @@ connection_args = OrderedDict(
108
104
  )
109
105
 
110
106
  connection_args_example = OrderedDict(
111
- strava_client_id ='<your-strava-client_id>',
112
- strava_access_token ='<your-strava-api-token>'
107
+ strava_client_id='<your-strava-client_id>',
108
+ strava_access_token='<your-strava-api-token>'
113
109
  )
@@ -8,12 +8,10 @@ from mindsdb.utilities import log
8
8
 
9
9
  from mindsdb_sql_parser import ast
10
10
 
11
- import requests
12
- import pandas as pd
13
- import json
14
11
 
15
12
  logger = log.getLogger(__name__)
16
13
 
14
+
17
15
  class StravaAllClubsTable(APITable):
18
16
  """Strava List all Clubs Table implementation"""
19
17
 
@@ -32,7 +30,6 @@ class StravaAllClubsTable(APITable):
32
30
  ValueError
33
31
  If the query contains an unsupported condition
34
32
  """
35
- conditions = extract_comparison_conditions(query.where)
36
33
 
37
34
  order_by_conditions = {}
38
35
 
@@ -42,7 +39,7 @@ class StravaAllClubsTable(APITable):
42
39
 
43
40
  for an_order in query.order_by:
44
41
  if an_order.field.parts[0] != "id":
45
- next
42
+ next
46
43
  if an_order.field.parts[1] in self.get_columns():
47
44
  order_by_conditions["columns"].append(an_order.field.parts[1])
48
45
 
@@ -66,7 +63,6 @@ class StravaAllClubsTable(APITable):
66
63
  else:
67
64
  raise ValueError(f"Unknown query target {type(target)}")
68
65
 
69
-
70
66
  if len(strava_clubs_df) == 0:
71
67
  strava_clubs_df = pd.DataFrame([], columns=selected_columns)
72
68
  else:
@@ -93,24 +89,24 @@ class StravaAllClubsTable(APITable):
93
89
  List of columns
94
90
  """
95
91
  return [
96
- 'id',
97
- 'name',
98
- 'sport_type',
99
- 'city',
100
- 'state',
101
- 'country',
102
- 'member_count',
92
+ 'id',
93
+ 'name',
94
+ 'sport_type',
95
+ 'city',
96
+ 'state',
97
+ 'country',
98
+ 'member_count',
103
99
  ]
104
100
 
105
101
  def call_strava_allclubs_api(self):
106
102
  """Pulls all the records from the given and returns it select()
107
-
103
+
108
104
  Returns
109
105
  -------
110
106
  pd.DataFrame of all the records of the "List Athlete Clubs" API end point
111
107
  """
112
108
 
113
- clubs = self.handler.connect().get_athlete_clubs()
109
+ clubs = self.handler.connect().get_athlete_clubs()
114
110
 
115
111
  club_cols = self.get_columns()
116
112
  data = []
@@ -153,7 +149,7 @@ class StravaClubActivitesTable(APITable):
153
149
 
154
150
  for an_order in query.order_by:
155
151
  if an_order.field.parts[0] != "id":
156
- next
152
+ next
157
153
  if an_order.field.parts[1] in self.get_columns():
158
154
  order_by_conditions["columns"].append(an_order.field.parts[1])
159
155
 
@@ -165,7 +161,7 @@ class StravaClubActivitesTable(APITable):
165
161
  raise ValueError(
166
162
  f"Order by unknown column {an_order.field.parts[1]}"
167
163
  )
168
-
164
+
169
165
  for a_where in conditions:
170
166
  if a_where[1] == "strava_club_id":
171
167
  if a_where[0] != "=":
@@ -174,7 +170,6 @@ class StravaClubActivitesTable(APITable):
174
170
  else:
175
171
  raise ValueError(f"Unsupported where argument {a_where[1]}")
176
172
 
177
-
178
173
  strava_club_activities_df = self.call_strava_clubactivities_api(a_where[2])
179
174
 
180
175
  selected_columns = []
@@ -187,7 +182,6 @@ class StravaClubActivitesTable(APITable):
187
182
  else:
188
183
  raise ValueError(f"Unknown query target {type(target)}")
189
184
 
190
-
191
185
  if len(strava_club_activities_df) == 0:
192
186
  strava_club_activities_df = pd.DataFrame([], columns=selected_columns)
193
187
  else:
@@ -214,18 +208,18 @@ class StravaClubActivitesTable(APITable):
214
208
  List of columns
215
209
  """
216
210
  return [
217
- 'name',
218
- 'distance',
219
- 'moving_time',
220
- 'elapsed_time',
221
- 'total_elevation_gain',
222
- 'sport_type',
223
- 'athlete.firstname',
211
+ 'name',
212
+ 'distance',
213
+ 'moving_time',
214
+ 'elapsed_time',
215
+ 'total_elevation_gain',
216
+ 'sport_type',
217
+ 'athlete.firstname',
224
218
  ]
225
219
 
226
- def call_strava_clubactivities_api(self,club_id):
220
+ def call_strava_clubactivities_api(self, club_id):
227
221
  """Pulls all the records from the given and returns it select()
228
-
222
+
229
223
  Returns
230
224
  -------
231
225
  pd.DataFrame of all the records of the "getClubActivitiesById" API end point
@@ -243,5 +237,3 @@ class StravaClubActivitesTable(APITable):
243
237
  all_strava_club_activities_df = pd.DataFrame(data, columns=club_cols)
244
238
 
245
239
  return all_strava_club_activities_df
246
-
247
-
@@ -10,6 +10,7 @@ from mindsdb_sql_parser import parse_sql
10
10
 
11
11
  logger = log.getLogger(__name__)
12
12
 
13
+
13
14
  class StripeHandler(APIHandler):
14
15
  """
15
16
  The Stripe handler implementation.
@@ -41,7 +42,7 @@ class StripeHandler(APIHandler):
41
42
 
42
43
  payment_intents_data = PaymentIntentsTable(self)
43
44
  self._register_table("payment_intents", payment_intents_data)
44
-
45
+
45
46
  payouts_data = PayoutsTable(self)
46
47
  self._register_table("payouts", payouts_data)
47
48
 
@@ -80,7 +81,7 @@ class StripeHandler(APIHandler):
80
81
  stripe.Account.retrieve()
81
82
  response.success = True
82
83
  except Exception as e:
83
- logger.error(f'Error connecting to Stripe!')
84
+ logger.error('Error connecting to Stripe!')
84
85
  response.error_message = str(e)
85
86
 
86
87
  self.is_connected = response.success
@@ -1,17 +1,11 @@
1
1
  import pandas as pd
2
-
3
2
  import stripe
4
3
  from typing import Text, List, Dict, Any
5
- from mindsdb_sql_parser import ast
6
- from mindsdb.integrations.libs.api_handler import APITable
7
- from mindsdb.integrations.utilities.handlers.query_utilities import INSERTQueryParser, DELETEQueryParser, UPDATEQueryParser, DELETEQueryExecutor, UPDATEQueryExecutor
8
4
 
9
5
  from mindsdb_sql_parser import ast
10
6
  from mindsdb.integrations.libs.api_handler import APITable
11
-
7
+ from mindsdb.integrations.utilities.handlers.query_utilities import INSERTQueryParser, DELETEQueryParser, UPDATEQueryParser, DELETEQueryExecutor, UPDATEQueryExecutor
12
8
  from mindsdb.integrations.utilities.handlers.query_utilities.select_query_utilities import SELECTQueryParser, SELECTQueryExecutor
13
-
14
-
15
9
  from mindsdb.utilities import log
16
10
 
17
11
  logger = log.getLogger(__name__)
@@ -235,7 +229,7 @@ class ProductsTable(APITable):
235
229
 
236
230
  class PaymentIntentsTable(APITable):
237
231
  """The Stripe Payment Intents Table implementation"""
238
-
232
+
239
233
  def select(self, query: ast.Select) -> pd.DataFrame:
240
234
  """
241
235
  Pulls Stripe Payment Intents data.
@@ -273,6 +267,7 @@ class PaymentIntentsTable(APITable):
273
267
  payment_intents_df = select_statement_executor.execute_query()
274
268
 
275
269
  return payment_intents_df
270
+
276
271
  def delete(self, query: ast.Delete) -> None:
277
272
  """
278
273
  Cancels Stripe Payment Intents and updates the local data.
@@ -307,22 +302,21 @@ class PaymentIntentsTable(APITable):
307
302
  payment_intent_ids = canceled_payment_intents_df['id'].tolist()
308
303
  self.cancel_payment_intents(payment_intent_ids)
309
304
 
310
-
311
305
  self.payment_intents_df = self.payment_intents_df[~self.payment_intents_df['id'].isin(payment_intent_ids)]
312
306
 
313
307
  def cancel_payment_intents(self, payment_intent_ids: List[str]) -> None:
314
308
  stripe = self.handler.connect()
315
309
  for payment_intent_id in payment_intent_ids:
316
310
  try:
317
-
311
+
318
312
  payment_intent = stripe.PaymentIntent.retrieve(payment_intent_id)
319
313
  if payment_intent.status in ['requires_payment_method', 'requires_capture', 'requires_confirmation', 'requires_action', 'processing']:
320
314
  stripe.PaymentIntent.cancel(payment_intent_id)
321
315
  else:
322
- logger.warning(f"Payment intent {payment_intent_id} is in status {payment_intent.status} and cannot be canceled.")
316
+ logger.warning(f"Payment intent {payment_intent_id} is in status {payment_intent.status} and cannot be canceled.")
323
317
  except stripe.error.StripeError as e:
324
318
  logger.error(f"Error cancelling payment intent {payment_intent_id}: {str(e)}")
325
-
319
+
326
320
  def update(self, query: 'ast.Update') -> None:
327
321
  """
328
322
  Updates data in Stripe "POST /v1/payment_intents/:id" API endpoint.
@@ -358,16 +352,6 @@ class PaymentIntentsTable(APITable):
358
352
  for payment_intent_id in payment_intent_ids:
359
353
  stripe.PaymentIntent.modify(payment_intent_id, **values_to_update)
360
354
 
361
-
362
- def get_columns(self) -> List[Text]:
363
- return pd.json_normalize(self.get_payment_intents(limit=1)).columns.tolist()
364
-
365
- def get_payment_intents(self, **kwargs) -> List[Dict]:
366
- payment_intents = stripe.PaymentIntent.list(**kwargs)
367
- return [payment_intent for payment_intent in payment_intents.data]
368
-
369
-
370
-
371
355
  def insert(self, query: 'ast.Insert') -> None:
372
356
  """
373
357
  Inserts data into Stripe "POST /v1/payment_intents" API endpoint.
@@ -398,7 +382,7 @@ class PaymentIntentsTable(APITable):
398
382
  def create_payment_intent(self, payment_intent_data: list) -> None:
399
383
  for data in payment_intent_data:
400
384
  stripe.PaymentIntent.create(**data)
401
-
385
+
402
386
  def get_columns(self) -> List[Text]:
403
387
  return pd.json_normalize(self.get_payment_intents(limit=1)).columns.tolist()
404
388
 
@@ -407,7 +391,7 @@ class PaymentIntentsTable(APITable):
407
391
  payment_intents = stripe.PaymentIntent.list(**kwargs)
408
392
  return [payment_intent.to_dict() for payment_intent in payment_intents]
409
393
 
410
-
394
+
411
395
  class RefundsTable(APITable):
412
396
  """The Stripe Refund Table implementation"""
413
397
 
@@ -455,9 +439,9 @@ class RefundsTable(APITable):
455
439
  def get_refunds(self, **kwargs) -> List[Dict]:
456
440
  stripe = self.handler.connect()
457
441
  refunds = stripe.Refund.list(**kwargs)
458
- return [refund.to_dict() for refund in refunds ]
459
-
460
-
442
+ return [refund.to_dict() for refund in refunds]
443
+
444
+
461
445
  class PayoutsTable(APITable):
462
446
  """The Stripe Payouts Table implementation"""
463
447
 
@@ -43,4 +43,4 @@ class SupabaseHandlerTest(unittest.TestCase):
43
43
 
44
44
  def test_7_select_query(self):
45
45
  query = "SELECT * FROM dt_test WHERE 'id'='a'"
46
- result = self.handler.native_query(query)
46
+ self.handler.native_query(query)
@@ -1,4 +1,7 @@
1
1
  from typing import Optional
2
+ import pysurrealdb as surreal
3
+ import pandas as pd
4
+
2
5
  from mindsdb_sql_parser.ast.base import ASTNode
3
6
  from mindsdb.integrations.libs.base import DatabaseHandler
4
7
  from mindsdb.utilities import log
@@ -8,10 +11,7 @@ from mindsdb.integrations.libs.response import (
8
11
  HandlerResponse as Response,
9
12
  RESPONSE_TYPE
10
13
  )
11
- from .utils.surreal_get_info import *
12
-
13
- import pysurrealdb as surreal
14
- import pandas as pd
14
+ from .utils.surreal_get_info import table_names, column_info
15
15
 
16
16
 
17
17
  logger = log.getLogger(__name__)
@@ -18,6 +18,7 @@ from mindsdb.integrations.libs.response import (
18
18
 
19
19
  logger = log.getLogger(__name__)
20
20
 
21
+
21
22
  class TDEngineHandler(DatabaseHandler):
22
23
  """
23
24
  This handler handles connection and execution of the TDEngine statements.
@@ -27,7 +28,7 @@ class TDEngineHandler(DatabaseHandler):
27
28
 
28
29
  def __init__(self, name, connection_data: Optional[dict], **kwargs):
29
30
  super().__init__(name)
30
-
31
+
31
32
  self.parser = parse_sql
32
33
  self.dialect = 'tdengine'
33
34
  self.kwargs = kwargs
@@ -36,7 +37,6 @@ class TDEngineHandler(DatabaseHandler):
36
37
  self.connection = None
37
38
  self.is_connected = False
38
39
 
39
-
40
40
  def connect(self):
41
41
  if self.is_connected is True:
42
42
  return self.connection
@@ -44,8 +44,8 @@ class TDEngineHandler(DatabaseHandler):
44
44
  config = {
45
45
  'url': self.connection_data.get('url', "http://localhost:6041"),
46
46
  'token': self.connection_data.get('token'),
47
- 'user': self.connection_data.get('user','root'),
48
- 'password': self.connection_data.get('password','taosdata'),
47
+ 'user': self.connection_data.get('user', 'root'),
48
+ 'password': self.connection_data.get('password', 'taosdata'),
49
49
  'database': self.connection_data.get('database')
50
50
  }
51
51
 
@@ -62,7 +62,7 @@ class TDEngineHandler(DatabaseHandler):
62
62
  return
63
63
 
64
64
  def check_connection(self) -> StatusResponse:
65
-
65
+
66
66
  result = StatusResponse(False)
67
67
  need_to_close = self.is_connected is False
68
68
 
@@ -90,29 +90,29 @@ class TDEngineHandler(DatabaseHandler):
90
90
  need_to_close = self.is_connected is False
91
91
 
92
92
  connection = self.connect()
93
- cur = connection.cursor()
93
+ cur = connection.cursor()
94
94
  try:
95
- cur.execute(query)
96
-
97
- if cur.rowcount != 0:
98
- result = cur.fetchall()
99
- response = Response(
100
- RESPONSE_TYPE.TABLE,
101
- pd.DataFrame(
102
- result,
103
- columns=[x[0] for x in cur.description]
104
- )
105
- )
106
- else:
107
- response = Response(RESPONSE_TYPE.OK)
108
- connection.commit()
109
- except Exception as e:
110
- logger.error(f'Error running query: {query} on {self.connection_data["database"]}!')
95
+ cur.execute(query)
96
+
97
+ if cur.rowcount != 0:
98
+ result = cur.fetchall()
111
99
  response = Response(
112
- RESPONSE_TYPE.ERROR,
113
- error_message=str(e)
100
+ RESPONSE_TYPE.TABLE,
101
+ pd.DataFrame(
102
+ result,
103
+ columns=[x[0] for x in cur.description]
104
+ )
114
105
  )
115
- # connection.rollback()
106
+ else:
107
+ response = Response(RESPONSE_TYPE.OK)
108
+ connection.commit()
109
+ except Exception as e:
110
+ logger.error(f'Error running query: {query} on {self.connection_data["database"]}!')
111
+ response = Response(
112
+ RESPONSE_TYPE.ERROR,
113
+ error_message=str(e)
114
+ )
115
+ # connection.rollback()
116
116
  cur.close()
117
117
  if need_to_close is True:
118
118
  self.disconnect()
@@ -133,7 +133,6 @@ class TDEngineHandler(DatabaseHandler):
133
133
  """
134
134
  q = 'SHOW TABLES;'
135
135
 
136
-
137
136
  return self.native_query(q)
138
137
 
139
138
  def get_columns(self, table_name) -> Response:
@@ -142,5 +141,4 @@ class TDEngineHandler(DatabaseHandler):
142
141
  """
143
142
  q = f'DESCRIBE {table_name};'
144
143
 
145
-
146
144
  return self.native_query(q)