MindsDB 25.4.3.1__py3-none-any.whl → 25.4.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 (43) hide show
  1. mindsdb/__about__.py +1 -1
  2. mindsdb/__main__.py +18 -4
  3. mindsdb/api/executor/data_types/response_type.py +1 -0
  4. mindsdb/api/executor/datahub/classes/tables_row.py +3 -10
  5. mindsdb/api/executor/datahub/datanodes/datanode.py +7 -2
  6. mindsdb/api/executor/datahub/datanodes/information_schema_datanode.py +44 -10
  7. mindsdb/api/executor/datahub/datanodes/integration_datanode.py +57 -38
  8. mindsdb/api/executor/datahub/datanodes/project_datanode.py +39 -7
  9. mindsdb/api/executor/datahub/datanodes/system_tables.py +116 -109
  10. mindsdb/api/executor/planner/query_planner.py +10 -1
  11. mindsdb/api/executor/planner/steps.py +8 -2
  12. mindsdb/api/executor/sql_query/steps/apply_predictor_step.py +5 -5
  13. mindsdb/api/executor/sql_query/steps/fetch_dataframe_partition.py +1 -1
  14. mindsdb/api/executor/sql_query/steps/insert_step.py +2 -1
  15. mindsdb/api/executor/sql_query/steps/prepare_steps.py +2 -3
  16. mindsdb/api/litellm/start.py +82 -0
  17. mindsdb/api/mysql/mysql_proxy/libs/constants/mysql.py +133 -0
  18. mindsdb/integrations/handlers/chromadb_handler/chromadb_handler.py +7 -2
  19. mindsdb/integrations/handlers/chromadb_handler/settings.py +1 -0
  20. mindsdb/integrations/handlers/mssql_handler/mssql_handler.py +13 -4
  21. mindsdb/integrations/handlers/mysql_handler/mysql_handler.py +14 -5
  22. mindsdb/integrations/handlers/oracle_handler/oracle_handler.py +14 -4
  23. mindsdb/integrations/handlers/pgvector_handler/pgvector_handler.py +34 -19
  24. mindsdb/integrations/handlers/postgres_handler/postgres_handler.py +21 -18
  25. mindsdb/integrations/handlers/snowflake_handler/snowflake_handler.py +14 -4
  26. mindsdb/integrations/handlers/web_handler/urlcrawl_helpers.py +1 -1
  27. mindsdb/integrations/libs/response.py +80 -32
  28. mindsdb/integrations/utilities/rag/rerankers/reranker_compressor.py +208 -13
  29. mindsdb/interfaces/agents/litellm_server.py +345 -0
  30. mindsdb/interfaces/agents/mcp_client_agent.py +252 -0
  31. mindsdb/interfaces/agents/run_mcp_agent.py +205 -0
  32. mindsdb/interfaces/knowledge_base/controller.py +17 -7
  33. mindsdb/interfaces/skills/skill_tool.py +7 -1
  34. mindsdb/interfaces/skills/sql_agent.py +8 -3
  35. mindsdb/utilities/config.py +8 -1
  36. mindsdb/utilities/starters.py +7 -0
  37. {mindsdb-25.4.3.1.dist-info → mindsdb-25.4.4.0.dist-info}/METADATA +232 -230
  38. {mindsdb-25.4.3.1.dist-info → mindsdb-25.4.4.0.dist-info}/RECORD +42 -39
  39. {mindsdb-25.4.3.1.dist-info → mindsdb-25.4.4.0.dist-info}/WHEEL +1 -1
  40. mindsdb/integrations/handlers/snowflake_handler/tests/test_snowflake_handler.py +0 -230
  41. /mindsdb/{integrations/handlers/snowflake_handler/tests → api/litellm}/__init__.py +0 -0
  42. {mindsdb-25.4.3.1.dist-info → mindsdb-25.4.4.0.dist-info}/licenses/LICENSE +0 -0
  43. {mindsdb-25.4.3.1.dist-info → mindsdb-25.4.4.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
- mindsdb/__about__.py,sha256=sHT78Y_MYnF6kg-l-XjnARN3cbDmrDd5bjabU7FHvd4,456
1
+ mindsdb/__about__.py,sha256=xMpov7jKITeklcDPHjR3WILrQ1IQSPGviN0W95KFY-g,456
2
2
  mindsdb/__init__.py,sha256=fZopLiAYa9MzMZ0d48JgHc_LddfFKDzh7n_8icsjrVs,54
3
- mindsdb/__main__.py,sha256=87osYtaljhBym3Zcif7hgN6Rlw-ozBAhOgdN4DN0zC0,23477
3
+ mindsdb/__main__.py,sha256=UwHgxc2X0jVFXoD4Xtx_SuzhGuNFyoeDgWRtSX8xmvQ,24281
4
4
  mindsdb/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  mindsdb/api/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  mindsdb/api/common/check_auth.py,sha256=cQEZqsnCbrRtUf8j4H6uPF98cDPu79t8TdtwBi5g30w,1345
@@ -11,43 +11,43 @@ mindsdb/api/executor/controllers/__init__.py,sha256=px47lPVKqfpqgcoEBHyWoax-ad01
11
11
  mindsdb/api/executor/controllers/session_controller.py,sha256=2Jf-V0nj7k0aB4scujNVyx91h54odkDrdK1ydsCo46g,3072
12
12
  mindsdb/api/executor/data_types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  mindsdb/api/executor/data_types/answer.py,sha256=bvCpI-Tji2kgTzyzFaw-EgstMdssZvFmLXmiBjG87Bg,392
14
- mindsdb/api/executor/data_types/response_type.py,sha256=eAmjV_UoOKTLh6H7Qi9_1VFhvGm7k1u30D8anJJASGo,128
14
+ mindsdb/api/executor/data_types/response_type.py,sha256=u9cqvtoAE_ozNJr2YsBLYW0BMGUdaqp8IWn6ZLxO2NA,209
15
15
  mindsdb/api/executor/datahub/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
16
16
  mindsdb/api/executor/datahub/classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
17
  mindsdb/api/executor/datahub/classes/response.py,sha256=sCGFeOscRWi7f0SPvS1P3IzKFJwCUGmjRUR2SxKnfcs,299
18
- mindsdb/api/executor/datahub/classes/tables_row.py,sha256=wT3TzoK3dFNiRc92rh_Hgo1uqaznFldtXBUGCzKNOlg,1934
18
+ mindsdb/api/executor/datahub/classes/tables_row.py,sha256=7sRAqTbL-YcIfIvbdyEokSefHoWVzNSRM1vjqhqkWGQ,1495
19
19
  mindsdb/api/executor/datahub/datanodes/__init__.py,sha256=aGoFHBCcl4y-a5rjUYNGpVbZjsh6i__t4u8AY5shPsg,185
20
- mindsdb/api/executor/datahub/datanodes/datanode.py,sha256=Up2GVmlR96qu7Bn_xrBXry8aK67YolPZ9Idk-yuL_yI,418
21
- mindsdb/api/executor/datahub/datanodes/information_schema_datanode.py,sha256=CVV46sqVm3bMgjn7SXPA2RfBPukRkmkKgeQfjdSX0cY,6407
22
- mindsdb/api/executor/datahub/datanodes/integration_datanode.py,sha256=KMLCNqdwaYLOqJNLRo1pV0y0IF-EBZe0-fpvzLBklKo,10505
20
+ mindsdb/api/executor/datahub/datanodes/datanode.py,sha256=hYIig24NP18NPlP-yR01qfgrebm2pwJYOy3zgZi4mQI,594
21
+ mindsdb/api/executor/datahub/datanodes/information_schema_datanode.py,sha256=R2vFk13fIFvQDd_JP6g7cqPJq3BTNW4CpXZY5jY704w,8260
22
+ mindsdb/api/executor/datahub/datanodes/integration_datanode.py,sha256=pTPPjSaAI4IuSNdz4xpbguZoxRt7WBNMhvsffalowvw,11907
23
23
  mindsdb/api/executor/datahub/datanodes/mindsdb_tables.py,sha256=kYKJWwzwXiNcOTytArtafPX3jJQ9iEdrzyQdo42Eyw0,14093
24
- mindsdb/api/executor/datahub/datanodes/project_datanode.py,sha256=Y4dzi-aHNgC5ncM8KyEhjoz5sglGfexix6fymA4ulvQ,6425
25
- mindsdb/api/executor/datahub/datanodes/system_tables.py,sha256=9Bol0qiDRxBQJ53-EytjxzLnVNsipmrRm0J-BrDJ7eU,15559
24
+ mindsdb/api/executor/datahub/datanodes/project_datanode.py,sha256=j2dJHT09FJOq76ORSkgGMtZxtE8kSB4VY6UrRce-KBc,8080
25
+ mindsdb/api/executor/datahub/datanodes/system_tables.py,sha256=lE72MHKk7yLbbvGvwVThczen290ShpkgXT7L82gvRJs,16982
26
26
  mindsdb/api/executor/planner/__init__.py,sha256=Ysh8feXwejpVhJ9yDbrE_lBA3EsGqyWnrbIPdmtE1Oc,143
27
27
  mindsdb/api/executor/planner/exceptions.py,sha256=rvLQoFZgCpVsGWomSBdPeuOyr_6FM-QKmseVvUIw5E8,46
28
28
  mindsdb/api/executor/planner/plan_join.py,sha256=QuwrM2Ck8jQmHMzo3eU768v1QqNtaLCZQ4cKfj2IkwA,22549
29
29
  mindsdb/api/executor/planner/plan_join_ts.py,sha256=LeQWq1dnhkLo36EaQG5B-EAlGfTFHT1szvEve75uMk8,16369
30
30
  mindsdb/api/executor/planner/query_plan.py,sha256=_ykXHlvqsaZRv2dEuyYk2W46hj2PRVxDERg9UKRy6bE,750
31
- mindsdb/api/executor/planner/query_planner.py,sha256=aFBcI_SsYizqzodGhfgPqOsLcMdlIEHAUOeN_KQ46wQ,34142
31
+ mindsdb/api/executor/planner/query_planner.py,sha256=P5X4Qja32if1f-DAAOaUMBET8fM0q1D5_FawkiWecKc,34497
32
32
  mindsdb/api/executor/planner/query_prepare.py,sha256=ZH8fZ05tFMMy9aeuLU1R5F-ThSPtiGbvozoCZSNGz7A,16694
33
33
  mindsdb/api/executor/planner/step_result.py,sha256=t2xBRVSfqTRk4GY2JIi21cXSUiFlCw5hMbWRBSMtEjM,519
34
- mindsdb/api/executor/planner/steps.py,sha256=pj-YdKfL1kePdqtAbgqitL4IdQnuN8jSq3VUxrkTsLw,9166
34
+ mindsdb/api/executor/planner/steps.py,sha256=8BV3dGf5Yi3jbq_2XPapr5nPyL0KqgPFtWxqX95Mcyw,9352
35
35
  mindsdb/api/executor/planner/ts_utils.py,sha256=_vujPqWH-Y3gVffv6ND1H2b_j99CBvIgQBxZUvZ7Sic,3871
36
36
  mindsdb/api/executor/planner/utils.py,sha256=pCec75lLc5V84LYMheprYxT7RGeJPKiNZrqA_bYmco0,3838
37
37
  mindsdb/api/executor/sql_query/__init__.py,sha256=LJ2BV8snOaXGA8RJ5W5AmQuViLlxJ5V25G_SdsNIYZI,32
38
38
  mindsdb/api/executor/sql_query/result_set.py,sha256=cX5Mp5BRYzsZ7avbIALVcrZgAs4w-c8O08JOQoQH-nM,9789
39
39
  mindsdb/api/executor/sql_query/sql_query.py,sha256=NUXAsttNgnbkJUDfLp0dKxo394j25HhCT7p-UfpY9k8,10697
40
40
  mindsdb/api/executor/sql_query/steps/__init__.py,sha256=KHQ25_rwy0pCFHqrLYismnY0UxS35mfpeYSL4D_fzqo,795
41
- mindsdb/api/executor/sql_query/steps/apply_predictor_step.py,sha256=Qm_kVTg0fwXWIy26Atmie_bGNa0wQQ7mVengN6Zly2A,16305
41
+ mindsdb/api/executor/sql_query/steps/apply_predictor_step.py,sha256=ACLQ3LLcZPdzZWqzCdAiX8vvTm6fMlMOlVqluT9-13Y,16313
42
42
  mindsdb/api/executor/sql_query/steps/base.py,sha256=xs3wOJ0fkqMRDNR5jDVaz23zeaD8wSF0L-JVC2WW7_E,557
43
43
  mindsdb/api/executor/sql_query/steps/delete_step.py,sha256=iPxSYq_GrVBsdB6mmWeCi5fLgbXbIhvXxc0LRMTbJ0M,1370
44
44
  mindsdb/api/executor/sql_query/steps/fetch_dataframe.py,sha256=-1CE0KIEY3IZjMfSoVCNUpe_yASU7rBnpVvEmpU13AQ,3941
45
- mindsdb/api/executor/sql_query/steps/fetch_dataframe_partition.py,sha256=gqhWnVwAABSIhuRJdqxtz7lxGLHBpr7Qi8XmEgO3Npo,8250
46
- mindsdb/api/executor/sql_query/steps/insert_step.py,sha256=Vz0rjS5FHx9Ym-U4TuU_PdO60qGov-ZFF83aLYOHfvo,3785
45
+ mindsdb/api/executor/sql_query/steps/fetch_dataframe_partition.py,sha256=AJS_AcCPE8zKbogqo2ZFGyi8LPYbQ_avvB92WMNYkpw,8246
46
+ mindsdb/api/executor/sql_query/steps/insert_step.py,sha256=nu1D6Lx6zQ0_OKT1LG-cfwedSNwT_Pg6TTCfUBKcPjM,3817
47
47
  mindsdb/api/executor/sql_query/steps/join_step.py,sha256=8wW7AmIMhMinpMovSgl-2CGujV3mDX5kTFLxuI1KZfQ,4261
48
48
  mindsdb/api/executor/sql_query/steps/map_reduce_step.py,sha256=v1TZy0FBjw_Bqxx-X2KP-jeqrun-FH4yilghiYhsQEM,4452
49
49
  mindsdb/api/executor/sql_query/steps/multiple_step.py,sha256=jAwY8rGUOdecQNP5JSjjHmPpNLMVPX4adAU-PoHJBuY,656
50
- mindsdb/api/executor/sql_query/steps/prepare_steps.py,sha256=eciOR2oUbheMcJqL72pqoSJncjh3HvL38GMZ6zVZdGM,1596
50
+ mindsdb/api/executor/sql_query/steps/prepare_steps.py,sha256=URXDoE6vuc5mJ-vBkM5RXRYCS92NXs8_Jrlykh9mk6c,1588
51
51
  mindsdb/api/executor/sql_query/steps/project_step.py,sha256=WQ23VkfWrVHKRnyy91Kh9uRI7Twb-IBvSQl2TZy_21w,2854
52
52
  mindsdb/api/executor/sql_query/steps/sql_steps.py,sha256=RXZ1L05H_MHwVNdf6qDbIStsDjG_3QxEr3wPuFtZMdM,891
53
53
  mindsdb/api/executor/sql_query/steps/subselect_step.py,sha256=J9aVzChLxIoI8QwykdqDKYCObW5_ZhYQPvv7oBRDXo8,8120
@@ -102,6 +102,8 @@ mindsdb/api/http/namespaces/configs/tabs.py,sha256=5kB0gcdPuYxUebeRuNCHkX8uleEDs
102
102
  mindsdb/api/http/namespaces/configs/tree.py,sha256=MIVdZLdwQP5DnJMO8lBN7ee1uUiT6Wy5LL865qAAizg,112
103
103
  mindsdb/api/http/namespaces/configs/util.py,sha256=BY7FtouA0QjxiygxCIrQNfP3z1dbXdbQzeKfsSW7UDE,93
104
104
  mindsdb/api/http/namespaces/configs/webhooks.py,sha256=WTZAN2r6GdR8LbhAyh9osFGaFDtgPDCl7VMSew-NUqs,116
105
+ mindsdb/api/litellm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
+ mindsdb/api/litellm/start.py,sha256=U6gBzQrHNmbPCjCnizPz59jnM0GdYmMx84XTIVzCiww,2761
105
107
  mindsdb/api/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
108
  mindsdb/api/mcp/start.py,sha256=zcWD70agZp9oUAXiSo0HJ0uwkxTwSsTQRQFknpLAhHw,4089
107
109
  mindsdb/api/mongo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -184,7 +186,7 @@ mindsdb/api/mysql/mysql_proxy/external_libs/__init__.py,sha256=47DEQpj8HBSa-_TIm
184
186
  mindsdb/api/mysql/mysql_proxy/external_libs/mysql_scramble.py,sha256=k5ZmduhQW2E3Mf_jns-dyVLsRxXUAJE1b3Qbr1FkHKo,4116
185
187
  mindsdb/api/mysql/mysql_proxy/libs/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
186
188
  mindsdb/api/mysql/mysql_proxy/libs/constants/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
187
- mindsdb/api/mysql/mysql_proxy/libs/constants/mysql.py,sha256=ubgVGT56J5xvzNz8JnHApdSGWTElW8gd_fD81uyB6Kk,38043
189
+ mindsdb/api/mysql/mysql_proxy/libs/constants/mysql.py,sha256=eCDaSXJJIZ45V24OUk9tlnXVUmlNtRyECraddhFXRiQ,42062
188
190
  mindsdb/api/mysql/mysql_proxy/utilities/__init__.py,sha256=y6AJu3xWHud92ZK_pfU3WzDj8gLIYvXfFNJ-phZmjJo,26
189
191
  mindsdb/api/mysql/mysql_proxy/utilities/exceptions.py,sha256=6iKdCaPRytM2uk9F0fXEl7Xl89wU-_28K0CtndChvfU,407
190
192
  mindsdb/api/mysql/mysql_proxy/utilities/lightwood_dtype.py,sha256=dPtDWMh2S5ICsSYMsnLia7-R1mwHUGs7aopiRhLamD8,2341
@@ -352,11 +354,11 @@ mindsdb/integrations/handlers/cassandra_handler/tests/__init__.py,sha256=47DEQpj
352
354
  mindsdb/integrations/handlers/cassandra_handler/tests/test_cassandra_handler.py,sha256=9MibR3PQlvZzt7Q0rCU6R8dICvqhPA_kxoUp4JiVEVE,1353
353
355
  mindsdb/integrations/handlers/chromadb_handler/__about__.py,sha256=28MPMq-Rjb1tR4SawSItNeGvVRupERgeHUDW7KRiyr4,345
354
356
  mindsdb/integrations/handlers/chromadb_handler/__init__.py,sha256=FzOq_6Kq-DWh2JpJT_nUryqEZrRR3TtpAmynMFOfHr4,659
355
- mindsdb/integrations/handlers/chromadb_handler/chromadb_handler.py,sha256=lDATt6UW-mpUuoxJdCFfoV9ghNKgk2Gb7TOq974Bf_k,18483
357
+ mindsdb/integrations/handlers/chromadb_handler/chromadb_handler.py,sha256=zBQ-Nl1aQqZFJbVo1W8-cxuLsPkqP6W01edZ1IXUByo,18704
356
358
  mindsdb/integrations/handlers/chromadb_handler/connection_args.py,sha256=68xiE2YIA1nVVgX2TujmKW2eJ1m7gkvkogtizepPR3o,664
357
359
  mindsdb/integrations/handlers/chromadb_handler/icon.png,sha256=kNvGVxfI_vQgHvpuBwHXKZOpgERaHHx3i1XmyA8GDRg,4199
358
360
  mindsdb/integrations/handlers/chromadb_handler/requirements.txt,sha256=xDi58Geqkth3WtJFFFD20zyutNzmtrKu9cQOSNNzx9A,16
359
- mindsdb/integrations/handlers/chromadb_handler/settings.py,sha256=2WL-LMu4ESft90BriiYOmo_WQoXPfh59u_8YeJ3Ml5c,1965
361
+ mindsdb/integrations/handlers/chromadb_handler/settings.py,sha256=X2InXMtGB5rwTgPIhKCw7h83dzH2n89P0QjsoZv8p0Q,1994
360
362
  mindsdb/integrations/handlers/chromadb_handler/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
361
363
  mindsdb/integrations/handlers/ckan_handler/__about__.py,sha256=asp1VEDXJCLipP3uoPK7Q_qXIODhH89pJqQyjv6P3WE,337
362
364
  mindsdb/integrations/handlers/ckan_handler/__init__.py,sha256=ERm0z1dxntDJfeAyYMKbzmKB48LmZC03o_g5gh9GXC4,621
@@ -1047,7 +1049,7 @@ mindsdb/integrations/handlers/mssql_handler/__about__.py,sha256=PIWwVwn9iAHApIWR
1047
1049
  mindsdb/integrations/handlers/mssql_handler/__init__.py,sha256=eYkU7VeK9N8vb68pZEJYVNDIH4JslkIiz8HrX9HV2sQ,612
1048
1050
  mindsdb/integrations/handlers/mssql_handler/connection_args.py,sha256=gqdCqCfjOvItZ-tAlUsh7QV7rfyjei_nj0rFX1hKEyE,1524
1049
1051
  mindsdb/integrations/handlers/mssql_handler/icon.svg,sha256=CMPDc66jCYyao_ui5eRds92raysDIMNuhIs59Tvbk_8,11944
1050
- mindsdb/integrations/handlers/mssql_handler/mssql_handler.py,sha256=Vr5_jwxtMnUMQFPO9Xl3K-1-NFkvbFhWjeU5mwmK6A8,8886
1052
+ mindsdb/integrations/handlers/mssql_handler/mssql_handler.py,sha256=p6ZU7ua6Oy_YJ6nobDmK_pqY1qEX6zCMvXfZHqeM1UA,9130
1051
1053
  mindsdb/integrations/handlers/mssql_handler/requirements.txt,sha256=U59auV3ZAxBGXdMbyXxdRI3LTfCICvZVZWKWMnLUlwA,17
1052
1054
  mindsdb/integrations/handlers/mssql_handler/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1053
1055
  mindsdb/integrations/handlers/mssql_handler/tests/test_mssql_handler.py,sha256=gh8t3ft5Xy-EZ3Rfk1oopojQTrbc_DDE-uAlWpeH-8E,6010
@@ -1055,7 +1057,7 @@ mindsdb/integrations/handlers/mysql_handler/__about__.py,sha256=UCFLhlYJ-_DenwFc
1055
1057
  mindsdb/integrations/handlers/mysql_handler/__init__.py,sha256=ikcK9oIUFjMfyRDAUKKvb8JQ4Fw-P1zLBeEHo2ZMPY8,592
1056
1058
  mindsdb/integrations/handlers/mysql_handler/connection_args.py,sha256=--9ZuX6QSTbWPcRQuptMElStU6p_wkYAUGuxVhRi9JU,2288
1057
1059
  mindsdb/integrations/handlers/mysql_handler/icon.svg,sha256=yvGRJXlDZ7tyqGSjbgEgG-gDhrKPUVt2ifG6xdjSfAA,4136
1058
- mindsdb/integrations/handlers/mysql_handler/mysql_handler.py,sha256=WNJFIcaB9qFHlF0EvZ7SXJ6qytQ779opeuLSQEcUYco,8124
1060
+ mindsdb/integrations/handlers/mysql_handler/mysql_handler.py,sha256=KcxIt6OJNbSzyhaGI2TNVIZ-BXY7NMwSKIfq70EQpKg,8288
1059
1061
  mindsdb/integrations/handlers/mysql_handler/requirements.txt,sha256=uDDh7neCc41qZxjCFB2rpKPTSZvD58RCfa7DjZJykw0,30
1060
1062
  mindsdb/integrations/handlers/mysql_handler/settings.py,sha256=3a6VexTd2nD72WiXYG_IGeZ-n59ANggeE3X5OkdxHI8,1692
1061
1063
  mindsdb/integrations/handlers/neuralforecast_handler/__about__.py,sha256=qfziv8flt2mMSNCiZMOzXHN7karhW69QZy3rRnCdSY8,377
@@ -1149,7 +1151,7 @@ mindsdb/integrations/handlers/oracle_handler/__about__.py,sha256=IIt4NVwQ52K79l7
1149
1151
  mindsdb/integrations/handlers/oracle_handler/__init__.py,sha256=9U8p9zE7yi32hWtWEQTFcVz5CSgAGlu6E9C-hPf_tBE,629
1150
1152
  mindsdb/integrations/handlers/oracle_handler/connection_args.py,sha256=6NbwAdFz7OBNIaaWH-uAF8sVcixRuRf6Srna-Mk20kk,1966
1151
1153
  mindsdb/integrations/handlers/oracle_handler/icon.svg,sha256=43yVX7g6fI4SLk9h23xsJvzLl9fMOfiKlQ4aNyQ3yxU,537
1152
- mindsdb/integrations/handlers/oracle_handler/oracle_handler.py,sha256=Ht3H9E9pPwJQa4VcTce7JhRQBQoD7VD-eHd76Znknug,11180
1154
+ mindsdb/integrations/handlers/oracle_handler/oracle_handler.py,sha256=u7aNmkzQdME35xKZipcjZP6_HuHzr9byEEeYM_Yzlug,11586
1153
1155
  mindsdb/integrations/handlers/oracle_handler/requirements.txt,sha256=6My_yqlFsKIvJvanjJc8usHiQ5Ax_rKaHrzNYNKC71c,16
1154
1156
  mindsdb/integrations/handlers/oracle_handler/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1155
1157
  mindsdb/integrations/handlers/oracle_handler/tests/test_oracle_handler.py,sha256=TjY4cZHMPUaLyusCTTHCRGC30pXDUqqM2vEjw2UqB1Q,1064
@@ -1175,7 +1177,7 @@ mindsdb/integrations/handlers/pgvector_handler/__about__.py,sha256=f7NEmnT5v8Bhc
1175
1177
  mindsdb/integrations/handlers/pgvector_handler/__init__.py,sha256=291L7daFcaNnMUEcIjs7-U-jgOTJzEvIm2FoO43S_6Q,659
1176
1178
  mindsdb/integrations/handlers/pgvector_handler/connection_args.py,sha256=etSu8X9uvYcdG0UZP7N8NdKCywmpcMf19ZPtthZArMg,1688
1177
1179
  mindsdb/integrations/handlers/pgvector_handler/icon.svg,sha256=BPrdgXF1gRp2IBmklyYNRpdGtbi1F6Ca78V_L4ji_LE,13760
1178
- mindsdb/integrations/handlers/pgvector_handler/pgvector_handler.py,sha256=kS-PFGLzo3IWFUQSh8BdYgaF3FGs_Ux7KjpSFua5PPQ,20376
1180
+ mindsdb/integrations/handlers/pgvector_handler/pgvector_handler.py,sha256=IvIeivzzWfmCcLRpJUmNEh1LvCJKYHX0hM1CH95q0Jg,20811
1179
1181
  mindsdb/integrations/handlers/pgvector_handler/requirements.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1180
1182
  mindsdb/integrations/handlers/phoenix_handler/__about__.py,sha256=PGGn5y0Y7tn2FnY2Ru1N7yjr6KZb8IhfUoKFc7GZO9I,359
1181
1183
  mindsdb/integrations/handlers/phoenix_handler/__init__.py,sha256=dguuDcpGTUdL7KHbLPv3OLY9fmvJrQj5I_CsfmuQdKk,606
@@ -1232,7 +1234,7 @@ mindsdb/integrations/handlers/postgres_handler/__about__.py,sha256=5W3AHCv0BuvCa
1232
1234
  mindsdb/integrations/handlers/postgres_handler/__init__.py,sha256=tszm8ZCcNkHKoPDIB99A4A40dvj-Yk8PY8p35irS0tQ,606
1233
1235
  mindsdb/integrations/handlers/postgres_handler/connection_args.py,sha256=Td7_Pj2HJYVi3-yzBe-BpFfl1zAZvtDZaYh77PfdhE8,1911
1234
1236
  mindsdb/integrations/handlers/postgres_handler/icon.svg,sha256=pDl9ZZL9cGcrcGVglWMX1L1IncVv5di1b1tly1dfia4,13757
1235
- mindsdb/integrations/handlers/postgres_handler/postgres_handler.py,sha256=gPm6NjxELtSiBG7XXE4xTEjZRbC2U51lnYq1NVXprPY,16612
1237
+ mindsdb/integrations/handlers/postgres_handler/postgres_handler.py,sha256=0seOFkaWTqS2wulM0NDBVq8UE7uJaQS9vgS1dTyXqFs,16567
1236
1238
  mindsdb/integrations/handlers/postgres_handler/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1237
1239
  mindsdb/integrations/handlers/postgres_handler/tests/test_postgres_handler.py,sha256=IwUYXO3aVCsIunHl5cPsf1nndZj3W-wkp5naH_vPb9Q,5825
1238
1240
  mindsdb/integrations/handlers/pycaret_handler/__about__.py,sha256=Cbt3qxt8SiIhU2_cgCwQxNjrB-alortHg4VqGFY0VlQ,340
@@ -1406,9 +1408,7 @@ mindsdb/integrations/handlers/snowflake_handler/__init__.py,sha256=tPpKf8KwyX2DI
1406
1408
  mindsdb/integrations/handlers/snowflake_handler/connection_args.py,sha256=7pnJbHpbXMZwQbAS4U7LJUk8OWLLpPN2_q9IPr7wpec,1778
1407
1409
  mindsdb/integrations/handlers/snowflake_handler/icon.svg,sha256=Syi1A_eltgZH6HjPuKi8bi9Pzf8T879RfVAZnNzK0Qo,4088
1408
1410
  mindsdb/integrations/handlers/snowflake_handler/requirements.txt,sha256=iTXmeBgeK_eFwxQM-1Lpv4MCy6_Nd7RWD6FpE6P9WA8,71
1409
- mindsdb/integrations/handlers/snowflake_handler/snowflake_handler.py,sha256=5gTB-_gQZq0GCtFWqAi7S8oEWRDTgfnxwbuJa-t0FYg,14536
1410
- mindsdb/integrations/handlers/snowflake_handler/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1411
- mindsdb/integrations/handlers/snowflake_handler/tests/test_snowflake_handler.py,sha256=2_zTKNxqbvhzwVhU9JRmv5Chhh9rulGnMfj-GVIPA60,7369
1411
+ mindsdb/integrations/handlers/snowflake_handler/snowflake_handler.py,sha256=B_QRuLXo-5YBg2294bifAd3asN_sHt8EdXVfYYsud1E,14715
1412
1412
  mindsdb/integrations/handlers/solace_handler/__about__.py,sha256=C-y1qVOGsPDdMEjUocH_juhmrpRwN2-U61sJT_lwzE0,354
1413
1413
  mindsdb/integrations/handlers/solace_handler/__init__.py,sha256=hotuL8W79n-H943a40Q94jm2S1he08VM68nTbVFIKPY,480
1414
1414
  mindsdb/integrations/handlers/solace_handler/icon.svg,sha256=rzGNiCdLWu9OJ3j8ilXrOTwRupMp3n3RQrfm2D_Nx5A,152
@@ -1616,7 +1616,7 @@ mindsdb/integrations/handlers/web_handler/__about__.py,sha256=CxQc3_pLSKuz1AnBj6
1616
1616
  mindsdb/integrations/handlers/web_handler/__init__.py,sha256=vfphmqTz8VmQlD7fmeE3B900gkZLuQ8QWQEvYFbTUkE,504
1617
1617
  mindsdb/integrations/handlers/web_handler/icon.svg,sha256=zd0x3UwSoGfJf7Vg5eAcaR4pEtkmJMZwVsgdha2Mtrc,1385
1618
1618
  mindsdb/integrations/handlers/web_handler/requirements.txt,sha256=DGTAMisIfhU-7xWdii0CEOyiwNDYYKBTsD4F-fKnNRo,13
1619
- mindsdb/integrations/handlers/web_handler/urlcrawl_helpers.py,sha256=KHX_f-7_7mLwhxQNLUPB-WUmGBlA04FtFJb4N2jBM2c,11304
1619
+ mindsdb/integrations/handlers/web_handler/urlcrawl_helpers.py,sha256=dCBqMYKwdQdThqbxeZA0a9z--yBC5vJJ8q8MikIKA2Q,11305
1620
1620
  mindsdb/integrations/handlers/web_handler/web_handler.py,sha256=XjM_hJTTjaA2MLjX0pCJpY4gpejICjme89K63Ghrr-U,3493
1621
1621
  mindsdb/integrations/handlers/webz_handler/__about__.py,sha256=WziIvpCflTd96urD_LFndy7sGYIxqzpfeql4yOTmt_Q,331
1622
1622
  mindsdb/integrations/handlers/webz_handler/__init__.py,sha256=06qa6pqDB-83d_TkU82CNRQYpq54-mP3r6fILAMVjRw,521
@@ -1688,7 +1688,7 @@ mindsdb/integrations/libs/const.py,sha256=Pbdv7K_SvOWSwANwu4FK2S0jkJYaRnVZpfx4Se
1688
1688
  mindsdb/integrations/libs/ml_exec_base.py,sha256=lp4LGXZUfTaPfY4V44osJQfz0pq0-l3V4gc1vl4rWoc,17540
1689
1689
  mindsdb/integrations/libs/process_cache.py,sha256=Razi-ybfANk1KUdUL7X_lR1IxCBmozuc7CCg1EXaQ5s,16079
1690
1690
  mindsdb/integrations/libs/realtime_chat_handler.py,sha256=bJxlLKzYUb8tYShRUsecdubZ_E0kWxzExXK-v37gqYc,1171
1691
- mindsdb/integrations/libs/response.py,sha256=k-wCsIofWk4S3Mv6GX6sq482g_BIYF0iIMEwxYxrJ6E,3409
1691
+ mindsdb/integrations/libs/response.py,sha256=aWIzWrZ6RQkeN9-YS-iaq1q4if6YLd0icnQKBC4YvcI,5886
1692
1692
  mindsdb/integrations/libs/storage_handler.py,sha256=g4rcAD4TzmxWmEtS00235_NAnrdulIir4If6E4y_OUo,3512
1693
1693
  mindsdb/integrations/libs/vectordatabase_handler.py,sha256=NuILtarU7TSRCWidb1GWh7BxiWy-wrFHDUSFTJzvArY,18227
1694
1694
  mindsdb/integrations/libs/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1758,7 +1758,7 @@ mindsdb/integrations/utilities/rag/loaders/vector_store_loader/vector_store_load
1758
1758
  mindsdb/integrations/utilities/rag/pipelines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1759
1759
  mindsdb/integrations/utilities/rag/pipelines/rag.py,sha256=Ij91MJ0QpqocHs2vLfLO43PFZPFCyt1mvFjwvDecVU4,15551
1760
1760
  mindsdb/integrations/utilities/rag/rerankers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1761
- mindsdb/integrations/utilities/rag/rerankers/reranker_compressor.py,sha256=Ah7ApcT_HxqkwdMNmrCpqEgTgWjQDZi-bBonGJihDo0,10546
1761
+ mindsdb/integrations/utilities/rag/rerankers/reranker_compressor.py,sha256=w0w8j_4Wt7jiCfJaTyfpY5NJhCaWLuJAzjm0xyUzFXo,21317
1762
1762
  mindsdb/integrations/utilities/rag/retrievers/__init__.py,sha256=Kuo3AJxzHVXMxPFxGqz2AXNPzjBzyMuk2yQj9pFpOsI,128
1763
1763
  mindsdb/integrations/utilities/rag/retrievers/auto_retriever.py,sha256=ODNXqeBuDfatGQLvKvogO0aA-A5v3Z4xbCbvO5ICvt4,3923
1764
1764
  mindsdb/integrations/utilities/rag/retrievers/base.py,sha256=fomZCUibDLKg-g4_uoTWz6OlhRG-GzqdPPoAR6XyPtk,264
@@ -1776,8 +1776,11 @@ mindsdb/interfaces/agents/constants.py,sha256=xBiIyfjVBggMBm78fvrssyDJwci0T8YP01
1776
1776
  mindsdb/interfaces/agents/event_dispatch_callback_handler.py,sha256=-76yTtxTHO5AkFTtr_RvYfkdUROJHcKZx6KJDZvj_-M,1331
1777
1777
  mindsdb/interfaces/agents/langchain_agent.py,sha256=ElPKeJW7mLOEMFdJKHE7FTTMu_Lijjn6_stJRslBaHg,27743
1778
1778
  mindsdb/interfaces/agents/langfuse_callback_handler.py,sha256=-51IWB5U2_m71xx00IwSOAK6gJ2n-HD_CzbtbmEfbBQ,11598
1779
+ mindsdb/interfaces/agents/litellm_server.py,sha256=j33LqHlUt9XApMozP4mHy9iFGT1Lx7WRqKHwGfJfT8w,11366
1780
+ mindsdb/interfaces/agents/mcp_client_agent.py,sha256=9oki-GDsN1H6fYsNLBQWTMYSHGpWliYF9I5AZSuXS8U,9814
1779
1781
  mindsdb/interfaces/agents/mindsdb_chat_model.py,sha256=dtVZU3k-aXiK9AC2_ZizeFP2er_-2YVLj4YxQ189nU0,6155
1780
1782
  mindsdb/interfaces/agents/mindsdb_database_agent.py,sha256=lk7UyE7tK807GXLBDr4-b2VVFUUzDtpMx2GjVtywv3o,2459
1783
+ mindsdb/interfaces/agents/run_mcp_agent.py,sha256=4ZXhIGBu3wVIZC9Ys6vTJDxGJzLXppLLqzbg1UFanS8,8689
1781
1784
  mindsdb/interfaces/agents/safe_output_parser.py,sha256=x2G27UPT42iVjjj44vGUVNPEUDSHH3nlKJwe3GZDh9A,1605
1782
1785
  mindsdb/interfaces/chatbot/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
1783
1786
  mindsdb/interfaces/chatbot/chatbot_controller.py,sha256=nmJs8zotT88aab99FdPQLqaOSsqbqmHNpo9oK6nlBG0,14494
@@ -1802,7 +1805,7 @@ mindsdb/interfaces/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
1802
1805
  mindsdb/interfaces/jobs/jobs_controller.py,sha256=2-L61saLbpaQ4hAT_HepIq0DUqdUxsPuNNMkj3ZfAJk,18299
1803
1806
  mindsdb/interfaces/jobs/scheduler.py,sha256=eHBWTpZozI_AC-hKmg4p0qRoGZW8O3gEt5Y9nDhHWpw,3696
1804
1807
  mindsdb/interfaces/knowledge_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1805
- mindsdb/interfaces/knowledge_base/controller.py,sha256=kguVmuRXiECCn2UJEKxRifTiD9d9Ju0GjdKP2NF1r_c,44410
1808
+ mindsdb/interfaces/knowledge_base/controller.py,sha256=VhUji-VV1R4egk1E8BMm78YrKk0FAicLyCQXT9LVGOA,44821
1806
1809
  mindsdb/interfaces/knowledge_base/utils.py,sha256=KGIbP8n5bx6JpL0jtFGeGd3lvDkFmZQnpIG9VbUmStU,1074
1807
1810
  mindsdb/interfaces/knowledge_base/preprocessing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1808
1811
  mindsdb/interfaces/knowledge_base/preprocessing/constants.py,sha256=iW5q65albIfTT1ZuxNceJ8o7yrOcttCH1Kx4Vdo-iPY,296
@@ -1817,9 +1820,9 @@ mindsdb/interfaces/query_context/context_controller.py,sha256=JfYpmHI2hvi4m-pogK
1817
1820
  mindsdb/interfaces/query_context/last_query.py,sha256=LbZwvPtDYJFVBRonJr6RgGZyCbCNGcJJdhS22pW_YE0,9331
1818
1821
  mindsdb/interfaces/skills/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
1819
1822
  mindsdb/interfaces/skills/retrieval_tool.py,sha256=V4ElVmbkh1e9J9_Ro3-Re9Js-dhUcFJkTmbUa8vi9Gc,8752
1820
- mindsdb/interfaces/skills/skill_tool.py,sha256=lUfQXxcLlEgjVe30knPjE2klWDlChHgCcBYlEJYy9Hw,12992
1823
+ mindsdb/interfaces/skills/skill_tool.py,sha256=jRZmgGiPMS5R7sanW_XtfT-hS_Y_7kJt67-VeGvpnds,13305
1821
1824
  mindsdb/interfaces/skills/skills_controller.py,sha256=cNblNQNOJXQkuXq0q2g7-OmAFG-QoBbRign6gHt6NLg,6319
1822
- mindsdb/interfaces/skills/sql_agent.py,sha256=ResOUpthG2o7C6w5qNyvQeCoT7fuaExQsRQA9TzKXVE,14619
1825
+ mindsdb/interfaces/skills/sql_agent.py,sha256=pLC4qeVsA4j6O3UJ4kHbe6_hF-NqRxYiI947d2uZ68w,14995
1823
1826
  mindsdb/interfaces/skills/custom/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1824
1827
  mindsdb/interfaces/skills/custom/text2sql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1825
1828
  mindsdb/interfaces/skills/custom/text2sql/mindsdb_sql_tool.py,sha256=n7r08idG9Qaa0C41HokUf-w72yyACoINOFKGgtNVHLA,1375
@@ -1907,7 +1910,7 @@ mindsdb/migrations/versions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
1907
1910
  mindsdb/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1908
1911
  mindsdb/utilities/auth.py,sha256=nfC8oqvaN3GAATc_LeHJ34Kg3PYfyfJ-KI6TN_fOB48,2568
1909
1912
  mindsdb/utilities/cache.py,sha256=nkfEt8Pw5H_8sPNXMaS2SZCC3NrEMi486K8m61zqu-s,7590
1910
- mindsdb/utilities/config.py,sha256=Sp8-RXEozUpvEeCzpFnr6SEXfBUOk3fSv8vZcj5MPQ4,21249
1913
+ mindsdb/utilities/config.py,sha256=uSi7vLwwpA5j_yAPOCgAbeMBMKn8LT0padCvzQ9FNSM,21697
1911
1914
  mindsdb/utilities/context.py,sha256=LyKNgtavQnAfZpaPHINhrA_9L_SjfURUBD9fZNtuQMQ,1813
1912
1915
  mindsdb/utilities/context_executor.py,sha256=OcJu-FgHZUmtAa_jOfXtwr7LPH3Vw2FPPJlx_9cWi7w,1945
1913
1916
  mindsdb/utilities/exception.py,sha256=q-9cwMLmQvuPpwdjRG0xNZ23z9cxHSfyT2295Rk6waA,1034
@@ -1920,7 +1923,7 @@ mindsdb/utilities/partitioning.py,sha256=EnFkEIfPMj2_uH7llOQqzjVrbGO2g0AzH2vQWPA
1920
1923
  mindsdb/utilities/ps.py,sha256=vsY7119OJGYd_n1FXT_FuMTfUL3dVr3WiTRyASaGD00,2339
1921
1924
  mindsdb/utilities/security.py,sha256=Mdj3c9Y2BFiEmwKY7J-yrbYdQ6oMgWENPE1XIu4tidk,1506
1922
1925
  mindsdb/utilities/sentry.py,sha256=PMI55LbYvCi8NLmI3QgCNL1M8bymVr8J4JBTywAl1WE,2420
1923
- mindsdb/utilities/starters.py,sha256=W-jEYCchUw2lrI88joA17OvUijHyjYF4b3hDrsuktm4,955
1926
+ mindsdb/utilities/starters.py,sha256=S9GXhgGCAgqyvxxP-Fqj_LCTRqAK5FdNyVi8Ele6ywE,1104
1924
1927
  mindsdb/utilities/utils.py,sha256=RZcPZtM5o1PPYOQmooHSTDn2yP909LGKm9whjVzTr28,1089
1925
1928
  mindsdb/utilities/wizards.py,sha256=vlWb50BSmBomj4jMGVc-DABx88GGAaWWqZf8RxA6O-0,1708
1926
1929
  mindsdb/utilities/hooks/__init__.py,sha256=HDPLuCxND4GUj5biGVfYeCmMZipMIyTG5WCOU3k654E,796
@@ -1941,8 +1944,8 @@ mindsdb/utilities/profiler/__init__.py,sha256=d4VXl80uSm1IotR-WwbBInPmLmACiK0Azx
1941
1944
  mindsdb/utilities/profiler/profiler.py,sha256=KCUtOupkbM_nCoof9MtiuhUzDGezx4a4NsBX6vGWbPA,3936
1942
1945
  mindsdb/utilities/render/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1943
1946
  mindsdb/utilities/render/sqlalchemy_render.py,sha256=6NqOcfz19dhd0PEyNfOtNHsBt1fGjq2E3nFNUad5HOk,31444
1944
- mindsdb-25.4.3.1.dist-info/licenses/LICENSE,sha256=ziqdjujs6WDn-9g3t0SISjHCBc2pLRht3gnRbQoXmIs,5804
1945
- mindsdb-25.4.3.1.dist-info/METADATA,sha256=KbmPijSygRsODQoIs5b6qK-yte-HBPE6rEhejZuxsxs,42147
1946
- mindsdb-25.4.3.1.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
1947
- mindsdb-25.4.3.1.dist-info/top_level.txt,sha256=10wPR96JDf3hM8aMP7Fz0lDlmClEP480zgXISJKr5jE,8
1948
- mindsdb-25.4.3.1.dist-info/RECORD,,
1947
+ mindsdb-25.4.4.0.dist-info/licenses/LICENSE,sha256=ziqdjujs6WDn-9g3t0SISjHCBc2pLRht3gnRbQoXmIs,5804
1948
+ mindsdb-25.4.4.0.dist-info/METADATA,sha256=U5ndFkV14y6vcSLnfk6B1YgtxcbCzwTmJm0DA3adOok,42224
1949
+ mindsdb-25.4.4.0.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
1950
+ mindsdb-25.4.4.0.dist-info/top_level.txt,sha256=10wPR96JDf3hM8aMP7Fz0lDlmClEP480zgXISJKr5jE,8
1951
+ mindsdb-25.4.4.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.1.0)
2
+ Generator: setuptools (79.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,230 +0,0 @@
1
- import os
2
- import pytest
3
- import snowflake
4
- import pandas as pd
5
- import snowflake.connector
6
- from mindsdb.integrations.handlers.snowflake_handler.snowflake_handler import SnowflakeHandler
7
- from mindsdb.integrations.libs.response import (
8
- HandlerResponse as Response,
9
- RESPONSE_TYPE,
10
- )
11
-
12
- HANDLER_KWARGS = {
13
- "connection_data": {
14
- "account": os.environ.get("MDB_TEST_SNOWFLAKE_ACCOUNT"),
15
- "user": os.environ.get("MDB_TEST_SNOWFLAKE_USER"),
16
- "password": os.environ.get("MDB_TEST_SNOWFLAKE_PASSWORD"),
17
- "database": os.environ.get("MDB_TEST_SNOWFLAKE_DATABASE"),
18
- "schema": os.environ.get("MDB_TEST_SNOWFLAKE_SCHEMA", "PUBLIC"),
19
- }
20
- }
21
-
22
-
23
- @pytest.fixture(scope="class")
24
- def snowflake_handler():
25
- """
26
- Create a SnowflakeHandler instance for testing.
27
- """
28
-
29
- seed_db()
30
- handler = SnowflakeHandler("test_snowflake_handler", **HANDLER_KWARGS)
31
- yield handler
32
- handler.disconnect()
33
-
34
-
35
- def seed_db():
36
- """
37
- Seed the test DB by running the queries in the seed.sql file.
38
- """
39
-
40
- # Connect to the SNOWFLAKE database to run seed queries
41
- conn_info = HANDLER_KWARGS["connection_data"].copy()
42
- conn_info["database"] = "SNOWFLAKE"
43
- db = snowflake.connector.connect(**conn_info)
44
-
45
- cursor = db.cursor()
46
- with open("mindsdb/integrations/handlers/snowflake_handler/tests/seed.sql", "r") as f:
47
- for line in f.readlines():
48
- cursor.execute(line)
49
- cursor.close()
50
- db.close()
51
-
52
-
53
- def check_valid_response(res):
54
- """
55
- Utility function to check if the response is valid.
56
- """
57
-
58
- if res.resp_type == RESPONSE_TYPE.TABLE:
59
- assert res.data_frame is not None, "expected to have some data, but got None"
60
- assert (
61
- res.error_code == 0
62
- ), f"expected to have zero error_code, but got {res.error_code}"
63
- assert (
64
- res.error_message is None
65
- ), f"expected to have None in error message, but got {res.error_message}"
66
-
67
-
68
- def get_table_names(snowflake_handler):
69
- """
70
- Utility function to get the table names from the Snowflake account.
71
- """
72
-
73
- res = snowflake_handler.get_tables()
74
- tables = res.data_frame
75
-
76
- assert tables is not None, "expected to have some tables in the db, but got None"
77
- assert (
78
- "table_name" in tables
79
- ), f"expected to get 'table_name' column in the response:\n{tables}"
80
-
81
- return list(tables["table_name"])
82
-
83
-
84
- @pytest.mark.usefixtures("snowflake_handler")
85
- class TestSnowflakeHandlerConnect:
86
- def test_connect(self, snowflake_handler):
87
- """
88
- Tests the `connect` method to ensure it connects to the Snowflake account.
89
- """
90
-
91
- snowflake_handler.connect()
92
- assert snowflake_handler.is_connected, "the handler has failed to connect"
93
-
94
- def test_check_connection(self, snowflake_handler):
95
- """
96
- Tests the `check_connection` method to verify that it returns a StatusResponse object and accurately reflects the connection status.
97
- """
98
-
99
- res = snowflake_handler.check_connection()
100
- assert res.success, res.error_message
101
-
102
-
103
- @pytest.mark.usefixtures("snowflake_handler")
104
- class TestSnowflakeHandlerTables:
105
- table_for_creation = "TEST_MDB"
106
-
107
- def test_get_tables(self, snowflake_handler):
108
- """
109
- Tests the `get_tables` method to confirm it correctly calls `native_query` with the appropriate SQL commands.
110
- """
111
-
112
- res = snowflake_handler.get_tables()
113
- assert res.type == RESPONSE_TYPE.TABLE, "expected a TABLE"
114
- assert len(res.data_frame) > 0, "expected > O columns"
115
-
116
- tables = res.data_frame
117
-
118
- assert (
119
- tables is not None
120
- ), "expected to have some tables in the db, but got None"
121
- assert (
122
- "table_name" in tables
123
- ), f"expected to get 'table_name' in the response but got: {tables}"
124
- assert (
125
- "TEST" in tables["table_name"].values
126
- ), "expected to have 'test' in the response."
127
-
128
- def test_get_columns(self, snowflake_handler):
129
- """
130
- Tests if the `get_columns` method correctly constructs the SQL query and if it calls `native_query` with the correct query.
131
- """
132
-
133
- res = snowflake_handler.get_columns("TEST")
134
- assert res.type == RESPONSE_TYPE.TABLE, "expected a TABLE"
135
- assert len(res.data_frame) > 0, "expected > O columns"
136
-
137
- views = res.data_frame
138
-
139
- expected_columns = {
140
- "Field": ["COL_ONE", "COL_FOUR", "COL_TWO", "COL_THREE"],
141
- "Type": ["NUMBER", "TEXT", "NUMBER", "FLOAT"],
142
- }
143
- expected_df = pd.DataFrame(expected_columns)
144
-
145
- # Sort both DataFrames by all columns before comparing
146
- views = views.sort_values(by=list(res.data_frame.columns)).reset_index(drop=True)
147
- expected_df = expected_df.sort_values(by=list(expected_df.columns)).reset_index(drop=True)
148
-
149
- assert views.equals(
150
- expected_df
151
- ), "response does not contain the expected columns"
152
-
153
- def test_create_table(self, snowflake_handler):
154
- """
155
- Tests a table creation query to ensure it creates a table in the Snowflake account.
156
- """
157
-
158
- query = f"""
159
- CREATE TABLE IF NOT EXISTS {self.table_for_creation} (
160
- test_col INT
161
- );
162
- """
163
- res = snowflake_handler.native_query(query)
164
- check_valid_response(res)
165
-
166
- tables = get_table_names(snowflake_handler)
167
-
168
- assert (
169
- self.table_for_creation in tables
170
- ), f"expected to have {self.table_for_creation} in database, but got: {tables}"
171
-
172
- def test_drop_table(self, snowflake_handler):
173
- """
174
- Tests a table drop query to ensure it drops a table in the Snowflake account.
175
- """
176
-
177
- query = f"DROP TABLE IF EXISTS {self.table_for_creation}"
178
- res = snowflake_handler.native_query(query)
179
- check_valid_response(res)
180
-
181
- tables = get_table_names(snowflake_handler)
182
-
183
- assert self.table_for_creation not in tables
184
-
185
-
186
- @pytest.mark.usefixtures("snowflake_handler")
187
- class TestSnowflakeHandlerQuery:
188
- def test_select_native_query(self, snowflake_handler):
189
- """
190
- Tests the `native_query` method to ensure it executes a SQL query using a mock cursor and returns a Response object.
191
- """
192
-
193
- query = "SELECT * FROM test"
194
- res = snowflake_handler.native_query(query)
195
-
196
- assert type(res) is Response
197
- assert res.resp_type == RESPONSE_TYPE.TABLE
198
-
199
- expected_data = {
200
- "COL_ONE": [1, 2, 3],
201
- "COL_TWO": [-1, -2, -3],
202
- "COL_THREE": [0.1, 0.2, 0.3],
203
- "COL_FOUR": ["A", "B", "C"],
204
- }
205
- expected_df = pd.DataFrame(expected_data)
206
-
207
- assert res.data_frame.equals(
208
- expected_df
209
- ), "response does not contain the expected data"
210
-
211
- def test_select_query(self, snowflake_handler):
212
- """
213
- Tests the `query` method to ensure it executes a SQL query and returns a Response object.
214
- """
215
-
216
- limit = 3
217
- query = "SELECT * FROM test"
218
- res = snowflake_handler.query(query)
219
- check_valid_response(res)
220
-
221
- got_rows = res.data_frame.shape[0]
222
- want_rows = limit
223
-
224
- assert (
225
- got_rows == want_rows
226
- ), f"expected to have {want_rows} rows in response but got: {got_rows}"
227
-
228
-
229
- if __name__ == "__main__":
230
- pytest.main([__file__])