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.
- mindsdb/__about__.py +1 -1
- mindsdb/__main__.py +18 -4
- mindsdb/api/executor/data_types/response_type.py +1 -0
- mindsdb/api/executor/datahub/classes/tables_row.py +3 -10
- mindsdb/api/executor/datahub/datanodes/datanode.py +7 -2
- mindsdb/api/executor/datahub/datanodes/information_schema_datanode.py +44 -10
- mindsdb/api/executor/datahub/datanodes/integration_datanode.py +57 -38
- mindsdb/api/executor/datahub/datanodes/project_datanode.py +39 -7
- mindsdb/api/executor/datahub/datanodes/system_tables.py +116 -109
- mindsdb/api/executor/planner/query_planner.py +10 -1
- mindsdb/api/executor/planner/steps.py +8 -2
- mindsdb/api/executor/sql_query/steps/apply_predictor_step.py +5 -5
- mindsdb/api/executor/sql_query/steps/fetch_dataframe_partition.py +1 -1
- mindsdb/api/executor/sql_query/steps/insert_step.py +2 -1
- mindsdb/api/executor/sql_query/steps/prepare_steps.py +2 -3
- mindsdb/api/litellm/start.py +82 -0
- mindsdb/api/mysql/mysql_proxy/libs/constants/mysql.py +133 -0
- mindsdb/integrations/handlers/chromadb_handler/chromadb_handler.py +7 -2
- mindsdb/integrations/handlers/chromadb_handler/settings.py +1 -0
- mindsdb/integrations/handlers/mssql_handler/mssql_handler.py +13 -4
- mindsdb/integrations/handlers/mysql_handler/mysql_handler.py +14 -5
- mindsdb/integrations/handlers/oracle_handler/oracle_handler.py +14 -4
- mindsdb/integrations/handlers/pgvector_handler/pgvector_handler.py +34 -19
- mindsdb/integrations/handlers/postgres_handler/postgres_handler.py +21 -18
- mindsdb/integrations/handlers/snowflake_handler/snowflake_handler.py +14 -4
- mindsdb/integrations/handlers/web_handler/urlcrawl_helpers.py +1 -1
- mindsdb/integrations/libs/response.py +80 -32
- mindsdb/integrations/utilities/rag/rerankers/reranker_compressor.py +208 -13
- mindsdb/interfaces/agents/litellm_server.py +345 -0
- mindsdb/interfaces/agents/mcp_client_agent.py +252 -0
- mindsdb/interfaces/agents/run_mcp_agent.py +205 -0
- mindsdb/interfaces/knowledge_base/controller.py +17 -7
- mindsdb/interfaces/skills/skill_tool.py +7 -1
- mindsdb/interfaces/skills/sql_agent.py +8 -3
- mindsdb/utilities/config.py +8 -1
- mindsdb/utilities/starters.py +7 -0
- {mindsdb-25.4.3.1.dist-info → mindsdb-25.4.4.0.dist-info}/METADATA +232 -230
- {mindsdb-25.4.3.1.dist-info → mindsdb-25.4.4.0.dist-info}/RECORD +42 -39
- {mindsdb-25.4.3.1.dist-info → mindsdb-25.4.4.0.dist-info}/WHEEL +1 -1
- mindsdb/integrations/handlers/snowflake_handler/tests/test_snowflake_handler.py +0 -230
- /mindsdb/{integrations/handlers/snowflake_handler/tests → api/litellm}/__init__.py +0 -0
- {mindsdb-25.4.3.1.dist-info → mindsdb-25.4.4.0.dist-info}/licenses/LICENSE +0 -0
- {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=
|
|
1
|
+
mindsdb/__about__.py,sha256=xMpov7jKITeklcDPHjR3WILrQ1IQSPGviN0W95KFY-g,456
|
|
2
2
|
mindsdb/__init__.py,sha256=fZopLiAYa9MzMZ0d48JgHc_LddfFKDzh7n_8icsjrVs,54
|
|
3
|
-
mindsdb/__main__.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
21
|
-
mindsdb/api/executor/datahub/datanodes/information_schema_datanode.py,sha256=
|
|
22
|
-
mindsdb/api/executor/datahub/datanodes/integration_datanode.py,sha256=
|
|
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=
|
|
25
|
-
mindsdb/api/executor/datahub/datanodes/system_tables.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
46
|
-
mindsdb/api/executor/sql_query/steps/insert_step.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
1945
|
-
mindsdb-25.4.
|
|
1946
|
-
mindsdb-25.4.
|
|
1947
|
-
mindsdb-25.4.
|
|
1948
|
-
mindsdb-25.4.
|
|
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,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__])
|
|
File without changes
|
|
File without changes
|
|
File without changes
|