MindsDB 25.5.3.0__py3-none-any.whl → 25.5.4.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of MindsDB might be problematic. Click here for more details.
- mindsdb/__about__.py +1 -1
- mindsdb/__main__.py +127 -79
- mindsdb/api/a2a/__init__.py +0 -0
- mindsdb/api/a2a/__main__.py +114 -0
- mindsdb/api/a2a/a2a_client.py +439 -0
- mindsdb/api/a2a/agent.py +308 -0
- mindsdb/api/a2a/common/__init__.py +0 -0
- mindsdb/api/a2a/common/client/__init__.py +4 -0
- mindsdb/api/a2a/common/client/card_resolver.py +21 -0
- mindsdb/api/a2a/common/client/client.py +86 -0
- mindsdb/api/a2a/common/server/__init__.py +4 -0
- mindsdb/api/a2a/common/server/server.py +164 -0
- mindsdb/api/a2a/common/server/task_manager.py +287 -0
- mindsdb/api/a2a/common/server/utils.py +28 -0
- mindsdb/api/a2a/common/types.py +365 -0
- mindsdb/api/a2a/constants.py +9 -0
- mindsdb/api/a2a/run_a2a.py +129 -0
- mindsdb/api/a2a/task_manager.py +594 -0
- mindsdb/api/executor/command_executor.py +47 -27
- mindsdb/api/executor/datahub/classes/response.py +5 -2
- mindsdb/api/executor/datahub/datanodes/integration_datanode.py +39 -72
- mindsdb/api/executor/planner/query_planner.py +10 -1
- mindsdb/api/executor/sql_query/result_set.py +185 -52
- mindsdb/api/executor/sql_query/sql_query.py +1 -1
- mindsdb/api/executor/sql_query/steps/apply_predictor_step.py +9 -12
- mindsdb/api/executor/sql_query/steps/fetch_dataframe.py +8 -10
- mindsdb/api/executor/sql_query/steps/fetch_dataframe_partition.py +5 -44
- mindsdb/api/executor/sql_query/steps/insert_step.py +24 -15
- mindsdb/api/executor/sql_query/steps/join_step.py +1 -1
- mindsdb/api/executor/sql_query/steps/project_step.py +1 -1
- mindsdb/api/executor/sql_query/steps/sql_steps.py +1 -1
- mindsdb/api/executor/sql_query/steps/subselect_step.py +4 -8
- mindsdb/api/executor/sql_query/steps/union_step.py +1 -3
- mindsdb/api/http/initialize.py +99 -83
- mindsdb/api/http/namespaces/analysis.py +3 -3
- mindsdb/api/http/namespaces/file.py +8 -2
- mindsdb/api/http/namespaces/sql.py +13 -27
- mindsdb/api/mcp/start.py +42 -5
- mindsdb/api/mysql/mysql_proxy/data_types/mysql_packet.py +0 -1
- mindsdb/api/mysql/mysql_proxy/data_types/mysql_packets/binary_resultset_row_package.py +52 -19
- mindsdb/api/mysql/mysql_proxy/executor/mysql_executor.py +8 -10
- mindsdb/api/mysql/mysql_proxy/libs/constants/mysql.py +54 -38
- mindsdb/api/mysql/mysql_proxy/mysql_proxy.py +82 -115
- mindsdb/api/mysql/mysql_proxy/utilities/dump.py +351 -0
- mindsdb/api/postgres/postgres_proxy/executor/executor.py +1 -1
- mindsdb/api/postgres/postgres_proxy/postgres_proxy.py +5 -6
- mindsdb/integrations/handlers/altibase_handler/altibase_handler.py +26 -27
- mindsdb/integrations/handlers/altibase_handler/connection_args.py +13 -13
- mindsdb/integrations/handlers/altibase_handler/tests/test_altibase_handler.py +8 -8
- mindsdb/integrations/handlers/altibase_handler/tests/test_altibase_handler_dsn.py +13 -13
- mindsdb/integrations/handlers/anthropic_handler/__init__.py +2 -2
- mindsdb/integrations/handlers/anthropic_handler/anthropic_handler.py +1 -3
- mindsdb/integrations/handlers/aurora_handler/aurora_handler.py +1 -0
- mindsdb/integrations/handlers/autosklearn_handler/autosklearn_handler.py +1 -1
- mindsdb/integrations/handlers/autosklearn_handler/config.py +0 -1
- mindsdb/integrations/handlers/bigquery_handler/bigquery_handler.py +1 -1
- mindsdb/integrations/handlers/bigquery_handler/tests/test_bigquery_handler.py +1 -1
- mindsdb/integrations/handlers/binance_handler/binance_handler.py +1 -0
- mindsdb/integrations/handlers/binance_handler/binance_tables.py +3 -4
- mindsdb/integrations/handlers/byom_handler/__init__.py +0 -1
- mindsdb/integrations/handlers/ckan_handler/ckan_handler.py +3 -0
- mindsdb/integrations/handlers/clickhouse_handler/__init__.py +1 -1
- mindsdb/integrations/handlers/cloud_spanner_handler/tests/test_cloud_spanner_handler.py +0 -2
- mindsdb/integrations/handlers/cloud_sql_handler/cloud_sql_handler.py +0 -1
- mindsdb/integrations/handlers/cohere_handler/__init__.py +1 -1
- mindsdb/integrations/handlers/cohere_handler/cohere_handler.py +11 -13
- mindsdb/integrations/handlers/confluence_handler/confluence_tables.py +6 -0
- mindsdb/integrations/handlers/databend_handler/connection_args.py +1 -1
- mindsdb/integrations/handlers/databend_handler/databend_handler.py +4 -4
- mindsdb/integrations/handlers/databend_handler/tests/__init__.py +0 -1
- mindsdb/integrations/handlers/databend_handler/tests/test_databend_handler.py +1 -1
- mindsdb/integrations/handlers/derby_handler/connection_args.py +1 -1
- mindsdb/integrations/handlers/derby_handler/derby_handler.py +14 -22
- mindsdb/integrations/handlers/derby_handler/tests/test_derby_handler.py +6 -6
- mindsdb/integrations/handlers/discord_handler/discord_handler.py +5 -5
- mindsdb/integrations/handlers/discord_handler/discord_tables.py +3 -3
- mindsdb/integrations/handlers/discord_handler/tests/test_discord.py +5 -3
- mindsdb/integrations/handlers/dockerhub_handler/dockerhub.py +3 -3
- mindsdb/integrations/handlers/dockerhub_handler/dockerhub_handler.py +2 -2
- mindsdb/integrations/handlers/dockerhub_handler/dockerhub_tables.py +57 -54
- mindsdb/integrations/handlers/dremio_handler/__init__.py +2 -2
- mindsdb/integrations/handlers/druid_handler/__init__.py +1 -1
- mindsdb/integrations/handlers/druid_handler/druid_handler.py +2 -2
- mindsdb/integrations/handlers/edgelessdb_handler/tests/test_edgelessdb_handler.py +9 -9
- mindsdb/integrations/handlers/email_handler/email_client.py +1 -1
- mindsdb/integrations/handlers/email_handler/email_ingestor.py +1 -1
- mindsdb/integrations/handlers/email_handler/email_tables.py +0 -1
- mindsdb/integrations/handlers/email_handler/settings.py +0 -1
- mindsdb/integrations/handlers/eventstoredb_handler/eventstoredb_handler.py +2 -1
- mindsdb/integrations/handlers/firebird_handler/firebird_handler.py +1 -1
- mindsdb/integrations/handlers/flaml_handler/flaml_handler.py +9 -9
- mindsdb/integrations/handlers/frappe_handler/frappe_client.py +5 -5
- mindsdb/integrations/handlers/frappe_handler/frappe_handler.py +6 -5
- mindsdb/integrations/handlers/frappe_handler/frappe_tables.py +2 -2
- mindsdb/integrations/handlers/github_handler/connection_args.py +2 -2
- mindsdb/integrations/handlers/github_handler/github_handler.py +1 -8
- mindsdb/integrations/handlers/github_handler/github_tables.py +13 -24
- mindsdb/integrations/handlers/gitlab_handler/gitlab_handler.py +2 -1
- mindsdb/integrations/handlers/gitlab_handler/gitlab_tables.py +1 -4
- mindsdb/integrations/handlers/gmail_handler/gmail_handler.py +6 -13
- mindsdb/integrations/handlers/google_books_handler/google_books_handler.py +2 -1
- mindsdb/integrations/handlers/google_books_handler/google_books_tables.py +0 -3
- mindsdb/integrations/handlers/google_calendar_handler/google_calendar_handler.py +4 -4
- mindsdb/integrations/handlers/google_calendar_handler/google_calendar_tables.py +2 -6
- mindsdb/integrations/handlers/google_content_shopping_handler/google_content_shopping_handler.py +3 -2
- mindsdb/integrations/handlers/google_content_shopping_handler/google_content_shopping_tables.py +0 -3
- mindsdb/integrations/handlers/google_fit_handler/google_fit_handler.py +10 -12
- mindsdb/integrations/handlers/google_fit_handler/google_fit_tables.py +11 -13
- mindsdb/integrations/handlers/google_search_handler/google_search_handler.py +2 -1
- mindsdb/integrations/handlers/google_search_handler/google_search_tables.py +0 -3
- mindsdb/integrations/handlers/groq_handler/__init__.py +3 -3
- mindsdb/integrations/handlers/hackernews_handler/hn_handler.py +5 -7
- mindsdb/integrations/handlers/hackernews_handler/hn_table.py +6 -7
- mindsdb/integrations/handlers/hive_handler/tests/test_hive_handler.py +1 -1
- mindsdb/integrations/handlers/hsqldb_handler/connection_args.py +6 -6
- mindsdb/integrations/handlers/hsqldb_handler/hsqldb_handler.py +4 -3
- mindsdb/integrations/handlers/huggingface_api_handler/exceptions.py +1 -1
- mindsdb/integrations/handlers/huggingface_api_handler/huggingface_api_handler.py +1 -8
- mindsdb/integrations/handlers/huggingface_handler/huggingface_handler.py +6 -6
- mindsdb/integrations/handlers/huggingface_handler/requirements.txt +1 -1
- mindsdb/integrations/handlers/huggingface_handler/requirements_cpu.txt +1 -1
- mindsdb/integrations/handlers/ignite_handler/ignite_handler.py +2 -1
- mindsdb/integrations/handlers/impala_handler/impala_handler.py +9 -12
- mindsdb/integrations/handlers/impala_handler/tests/test_impala_handler.py +11 -11
- mindsdb/integrations/handlers/influxdb_handler/influxdb_handler.py +10 -13
- mindsdb/integrations/handlers/influxdb_handler/influxdb_tables.py +20 -20
- mindsdb/integrations/handlers/informix_handler/__about__.py +8 -8
- mindsdb/integrations/handlers/informix_handler/__init__.py +12 -5
- mindsdb/integrations/handlers/informix_handler/informix_handler.py +99 -133
- mindsdb/integrations/handlers/informix_handler/tests/test_informix_handler.py +13 -11
- mindsdb/integrations/handlers/ingres_handler/__about__.py +0 -1
- mindsdb/integrations/handlers/ingres_handler/ingres_handler.py +1 -0
- mindsdb/integrations/handlers/jira_handler/jira_handler.py +4 -4
- mindsdb/integrations/handlers/jira_handler/jira_tables.py +9 -9
- mindsdb/integrations/handlers/kinetica_handler/__init__.py +0 -1
- mindsdb/integrations/handlers/langchain_handler/langchain_handler.py +4 -4
- mindsdb/integrations/handlers/langchain_handler/tools.py +9 -10
- mindsdb/integrations/handlers/leonardoai_handler/__init__.py +1 -1
- mindsdb/integrations/handlers/lightwood_handler/functions.py +2 -2
- mindsdb/integrations/handlers/lightwood_handler/lightwood_handler.py +0 -1
- mindsdb/integrations/handlers/lightwood_handler/tests/test_lightwood_handler.py +11 -11
- mindsdb/integrations/handlers/llama_index_handler/llama_index_handler.py +4 -4
- mindsdb/integrations/handlers/llama_index_handler/settings.py +10 -9
- mindsdb/integrations/handlers/materialize_handler/tests/test_materialize_handler.py +8 -10
- mindsdb/integrations/handlers/matrixone_handler/matrixone_handler.py +4 -4
- mindsdb/integrations/handlers/matrixone_handler/tests/test_matrixone_handler.py +8 -9
- mindsdb/integrations/handlers/maxdb_handler/connection_args.py +25 -25
- mindsdb/integrations/handlers/maxdb_handler/maxdb_handler.py +1 -0
- mindsdb/integrations/handlers/mediawiki_handler/mediawiki_handler.py +3 -2
- mindsdb/integrations/handlers/mediawiki_handler/mediawiki_tables.py +1 -1
- mindsdb/integrations/handlers/mendeley_handler/__about__.py +1 -1
- mindsdb/integrations/handlers/mendeley_handler/__init__.py +2 -2
- mindsdb/integrations/handlers/mendeley_handler/mendeley_handler.py +48 -56
- mindsdb/integrations/handlers/mendeley_handler/mendeley_tables.py +24 -29
- mindsdb/integrations/handlers/mendeley_handler/tests/test_mendeley_handler.py +19 -17
- mindsdb/integrations/handlers/merlion_handler/merlion_handler.py +5 -4
- mindsdb/integrations/handlers/minds_endpoint_handler/__init__.py +3 -3
- mindsdb/integrations/handlers/mlflow_handler/mlflow_handler.py +58 -36
- mindsdb/integrations/handlers/monetdb_handler/__about__.py +8 -8
- mindsdb/integrations/handlers/monetdb_handler/__init__.py +15 -5
- mindsdb/integrations/handlers/monetdb_handler/connection_args.py +17 -18
- mindsdb/integrations/handlers/monetdb_handler/monetdb_handler.py +40 -57
- mindsdb/integrations/handlers/monetdb_handler/tests/test_monetdb_handler.py +7 -8
- mindsdb/integrations/handlers/monetdb_handler/utils/monet_get_id.py +13 -14
- mindsdb/integrations/handlers/monkeylearn_handler/__about__.py +1 -1
- mindsdb/integrations/handlers/monkeylearn_handler/__init__.py +1 -1
- mindsdb/integrations/handlers/monkeylearn_handler/monkeylearn_handler.py +2 -5
- mindsdb/integrations/handlers/ms_one_drive_handler/ms_graph_api_one_drive_client.py +1 -0
- mindsdb/integrations/handlers/ms_one_drive_handler/ms_one_drive_handler.py +1 -1
- mindsdb/integrations/handlers/ms_teams_handler/ms_graph_api_teams_client.py +23 -23
- mindsdb/integrations/handlers/ms_teams_handler/ms_teams_handler.py +3 -3
- mindsdb/integrations/handlers/ms_teams_handler/ms_teams_tables.py +10 -5
- mindsdb/integrations/handlers/mssql_handler/mssql_handler.py +73 -8
- mindsdb/integrations/handlers/mysql_handler/__about__.py +8 -8
- mindsdb/integrations/handlers/mysql_handler/__init__.py +15 -5
- mindsdb/integrations/handlers/mysql_handler/connection_args.py +43 -47
- mindsdb/integrations/handlers/mysql_handler/mysql_handler.py +101 -34
- mindsdb/integrations/handlers/mysql_handler/settings.py +15 -13
- mindsdb/integrations/handlers/neuralforecast_handler/neuralforecast_handler.py +1 -1
- mindsdb/integrations/handlers/newsapi_handler/newsapi_handler.py +1 -1
- mindsdb/integrations/handlers/newsapi_handler/tests/test_newsapi_handler.py +4 -4
- mindsdb/integrations/handlers/nuo_jdbc_handler/connection_args.py +2 -2
- mindsdb/integrations/handlers/nuo_jdbc_handler/nuo_jdbc_handler.py +28 -36
- mindsdb/integrations/handlers/nuo_jdbc_handler/tests/test_nuo_handler.py +5 -5
- mindsdb/integrations/handlers/oceanbase_handler/oceanbase_handler.py +0 -1
- mindsdb/integrations/handlers/oceanbase_handler/tests/test_oceanbase_handler.py +8 -10
- mindsdb/integrations/handlers/ollama_handler/ollama_handler.py +3 -3
- mindsdb/integrations/handlers/opengauss_handler/tests/test_opengauss_handler.py +1 -2
- mindsdb/integrations/handlers/openstreetmap_handler/__init__.py +7 -7
- mindsdb/integrations/handlers/oracle_handler/connection_args.py +6 -0
- mindsdb/integrations/handlers/oracle_handler/oracle_handler.py +77 -11
- mindsdb/integrations/handlers/orioledb_handler/tests/test_orioledb_handler.py +8 -10
- mindsdb/integrations/handlers/palm_handler/__about__.py +1 -1
- mindsdb/integrations/handlers/palm_handler/__init__.py +1 -1
- mindsdb/integrations/handlers/palm_handler/palm_handler.py +1 -3
- mindsdb/integrations/handlers/paypal_handler/paypal_handler.py +2 -2
- mindsdb/integrations/handlers/paypal_handler/paypal_tables.py +15 -14
- mindsdb/integrations/handlers/pgvector_handler/pgvector_handler.py +53 -10
- mindsdb/integrations/handlers/phoenix_handler/__init__.py +1 -1
- mindsdb/integrations/handlers/phoenix_handler/phoenix_handler.py +1 -0
- mindsdb/integrations/handlers/pinot_handler/__init__.py +1 -1
- mindsdb/integrations/handlers/pinot_handler/pinot_handler.py +3 -2
- mindsdb/integrations/handlers/plaid_handler/plaid_handler.py +13 -13
- mindsdb/integrations/handlers/plaid_handler/plaid_tables.py +10 -12
- mindsdb/integrations/handlers/plaid_handler/utils.py +4 -6
- mindsdb/integrations/handlers/planetscale_handler/planetscale_handler.py +1 -4
- mindsdb/integrations/handlers/portkey_handler/__init__.py +2 -2
- mindsdb/integrations/handlers/postgres_handler/postgres_handler.py +105 -24
- mindsdb/integrations/handlers/postgres_handler/tests/test_postgres_handler.py +11 -6
- mindsdb/integrations/handlers/questdb_handler/questdb_handler.py +1 -2
- mindsdb/integrations/handlers/questdb_handler/tests/test_questdb_handler.py +2 -3
- mindsdb/integrations/handlers/quickbooks_handler/quickbooks_handler.py +6 -8
- mindsdb/integrations/handlers/quickbooks_handler/quickbooks_table.py +10 -10
- mindsdb/integrations/handlers/rag_handler/ingest.py +2 -2
- mindsdb/integrations/handlers/rag_handler/rag_handler.py +1 -1
- mindsdb/integrations/handlers/rag_handler/settings.py +1 -1
- mindsdb/integrations/handlers/reddit_handler/reddit_handler.py +2 -7
- mindsdb/integrations/handlers/reddit_handler/reddit_tables.py +2 -3
- mindsdb/integrations/handlers/replicate_handler/replicate_handler.py +6 -6
- mindsdb/integrations/handlers/rocket_chat_handler/rocket_chat_handler.py +1 -2
- mindsdb/integrations/handlers/rocket_chat_handler/rocket_chat_tables.py +0 -3
- mindsdb/integrations/handlers/rockset_handler/connection_args.py +14 -14
- mindsdb/integrations/handlers/rockset_handler/tests/test_rockset_handler.py +1 -0
- mindsdb/integrations/handlers/scylla_handler/scylla_handler.py +6 -5
- mindsdb/integrations/handlers/sendinblue_handler/sendinblue_handler.py +2 -1
- mindsdb/integrations/handlers/sendinblue_handler/sendinblue_tables.py +16 -16
- mindsdb/integrations/handlers/sentence_transformers_handler/__init__.py +1 -1
- mindsdb/integrations/handlers/sheets_handler/connection_args.py +1 -1
- mindsdb/integrations/handlers/shopify_handler/shopify_handler.py +7 -6
- mindsdb/integrations/handlers/shopify_handler/shopify_tables.py +38 -41
- mindsdb/integrations/handlers/singlestore_handler/__about__.py +1 -1
- mindsdb/integrations/handlers/singlestore_handler/__init__.py +0 -1
- mindsdb/integrations/handlers/singlestore_handler/singlestore_handler.py +1 -0
- mindsdb/integrations/handlers/singlestore_handler/tests/test_singlestore_handler.py +3 -3
- mindsdb/integrations/handlers/slack_handler/__init__.py +3 -3
- mindsdb/integrations/handlers/snowflake_handler/snowflake_handler.py +100 -6
- mindsdb/integrations/handlers/solr_handler/connection_args.py +7 -7
- mindsdb/integrations/handlers/solr_handler/solr_handler.py +2 -1
- mindsdb/integrations/handlers/solr_handler/tests/test_solr_handler.py +2 -1
- mindsdb/integrations/handlers/sqlany_handler/sqlany_handler.py +3 -2
- mindsdb/integrations/handlers/sqlite_handler/sqlite_handler.py +1 -0
- mindsdb/integrations/handlers/sqreamdb_handler/connection_args.py +1 -1
- mindsdb/integrations/handlers/sqreamdb_handler/sqreamdb_handler.py +15 -20
- mindsdb/integrations/handlers/sqreamdb_handler/tests/test_sqreamdb_handler.py +4 -4
- mindsdb/integrations/handlers/stabilityai_handler/__init__.py +1 -1
- mindsdb/integrations/handlers/starrocks_handler/starrocks_handler.py +0 -1
- mindsdb/integrations/handlers/starrocks_handler/tests/test_starrocks_handler.py +8 -10
- mindsdb/integrations/handlers/statsforecast_handler/statsforecast_handler.py +2 -2
- mindsdb/integrations/handlers/strava_handler/strava_handler.py +4 -8
- mindsdb/integrations/handlers/strava_handler/strava_tables.py +22 -30
- mindsdb/integrations/handlers/stripe_handler/stripe_handler.py +3 -2
- mindsdb/integrations/handlers/stripe_handler/stripe_tables.py +11 -27
- mindsdb/integrations/handlers/supabase_handler/tests/test_supabase_handler.py +1 -1
- mindsdb/integrations/handlers/surrealdb_handler/surrealdb_handler.py +4 -4
- mindsdb/integrations/handlers/tdengine_handler/tdengine_handler.py +25 -27
- mindsdb/integrations/handlers/tdengine_handler/tests/test_tdengine_handler.py +8 -8
- mindsdb/integrations/handlers/tidb_handler/tests/test_tidb_handler.py +1 -2
- mindsdb/integrations/handlers/timegpt_handler/timegpt_handler.py +5 -5
- mindsdb/integrations/handlers/tpot_handler/tpot_handler.py +21 -26
- mindsdb/integrations/handlers/trino_handler/trino_handler.py +14 -14
- mindsdb/integrations/handlers/twitter_handler/twitter_handler.py +2 -4
- mindsdb/integrations/handlers/unify_handler/tests/test_unify_handler.py +7 -8
- mindsdb/integrations/handlers/unify_handler/unify_handler.py +9 -9
- mindsdb/integrations/handlers/vertex_handler/vertex_client.py +1 -1
- mindsdb/integrations/handlers/vertica_handler/tests/test_vertica_handler.py +11 -11
- mindsdb/integrations/handlers/vertica_handler/vertica_handler.py +11 -14
- mindsdb/integrations/handlers/vitess_handler/tests/test_vitess_handler.py +9 -11
- mindsdb/integrations/handlers/vitess_handler/vitess_handler.py +0 -1
- mindsdb/integrations/handlers/web_handler/web_handler.py +1 -0
- mindsdb/integrations/handlers/whatsapp_handler/__init__.py +3 -3
- mindsdb/integrations/handlers/writer_handler/evaluate.py +1 -1
- mindsdb/integrations/handlers/writer_handler/settings.py +0 -1
- mindsdb/integrations/handlers/writer_handler/writer_handler.py +1 -0
- mindsdb/integrations/handlers/youtube_handler/youtube_handler.py +5 -5
- mindsdb/integrations/handlers/youtube_handler/youtube_tables.py +26 -27
- mindsdb/integrations/handlers/yugabyte_handler/tests/test_yugabyte_handler.py +3 -3
- mindsdb/integrations/handlers/yugabyte_handler/yugabyte_handler.py +0 -6
- mindsdb/integrations/libs/response.py +67 -52
- mindsdb/integrations/libs/vectordatabase_handler.py +6 -0
- mindsdb/integrations/utilities/handler_utils.py +15 -3
- mindsdb/integrations/utilities/handlers/api_utilities/__init__.py +0 -1
- mindsdb/integrations/utilities/handlers/auth_utilities/__init__.py +0 -2
- mindsdb/integrations/utilities/utils.py +3 -3
- mindsdb/interfaces/agents/agents_controller.py +164 -1
- mindsdb/interfaces/agents/constants.py +15 -0
- mindsdb/interfaces/agents/langchain_agent.py +16 -4
- mindsdb/interfaces/agents/mindsdb_database_agent.py +101 -2
- mindsdb/interfaces/knowledge_base/controller.py +25 -0
- mindsdb/interfaces/knowledge_base/preprocessing/document_preprocessor.py +13 -10
- mindsdb/interfaces/knowledge_base/preprocessing/json_chunker.py +434 -0
- mindsdb/interfaces/knowledge_base/preprocessing/models.py +54 -0
- mindsdb/interfaces/query_context/context_controller.py +66 -10
- mindsdb/interfaces/skills/custom/text2sql/mindsdb_kb_tools.py +190 -0
- mindsdb/interfaces/skills/custom/text2sql/mindsdb_sql_toolkit.py +92 -0
- mindsdb/interfaces/skills/skill_tool.py +202 -57
- mindsdb/interfaces/skills/sql_agent.py +205 -17
- mindsdb/interfaces/storage/fs.py +1 -0
- mindsdb/interfaces/variables/__init__.py +0 -0
- mindsdb/interfaces/variables/variables_controller.py +97 -0
- mindsdb/migrations/env.py +5 -7
- mindsdb/migrations/migrate.py +47 -7
- mindsdb/migrations/versions/2025-05-21_9f150e4f9a05_checkpoint_1.py +360 -0
- mindsdb/utilities/config.py +331 -219
- mindsdb/utilities/starters.py +13 -0
- {mindsdb-25.5.3.0.dist-info → mindsdb-25.5.4.0.dist-info}/METADATA +641 -695
- {mindsdb-25.5.3.0.dist-info → mindsdb-25.5.4.0.dist-info}/RECORD +309 -288
- {mindsdb-25.5.3.0.dist-info → mindsdb-25.5.4.0.dist-info}/WHEEL +1 -1
- mindsdb/integrations/handlers/monkeylearn_handler/requirements.txt +0 -1
- {mindsdb-25.5.3.0.dist-info → mindsdb-25.5.4.0.dist-info}/licenses/LICENSE +0 -0
- {mindsdb-25.5.3.0.dist-info → mindsdb-25.5.4.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import tiktoken
|
|
2
|
-
|
|
3
|
-
from typing import Callable, Dict
|
|
2
|
+
from typing import Callable
|
|
4
3
|
|
|
5
4
|
from mindsdb_sql_parser import parse_sql
|
|
6
5
|
from mindsdb_sql_parser.ast import Insert
|
|
@@ -13,21 +12,18 @@ from langchain.chains.llm import LLMChain
|
|
|
13
12
|
from langchain.chains.combine_documents.stuff import StuffDocumentsChain
|
|
14
13
|
from langchain.chains import ReduceDocumentsChain, MapReduceDocumentsChain
|
|
15
14
|
|
|
16
|
-
from mindsdb.
|
|
17
|
-
from mindsdb.integrations.utilities.rag.settings import RAGPipelineModel, VectorStoreType, DEFAULT_COLLECTION_NAME
|
|
18
|
-
from mindsdb.interfaces.skills.skill_tool import skill_tool, SkillType
|
|
19
|
-
from mindsdb.interfaces.storage import db
|
|
15
|
+
from mindsdb.interfaces.skills.skill_tool import skill_tool
|
|
20
16
|
from mindsdb.utilities import log
|
|
21
17
|
from langchain_core.prompts import PromptTemplate
|
|
22
18
|
from langchain_core.tools import Tool
|
|
23
19
|
from langchain_text_splitters import CharacterTextSplitter
|
|
24
20
|
|
|
25
21
|
logger = log.getLogger(__name__)
|
|
26
|
-
from mindsdb.interfaces.storage.db import KnowledgeBase
|
|
27
|
-
from mindsdb.utilities import log
|
|
28
22
|
|
|
29
23
|
# Individual tools
|
|
30
24
|
# Note: all tools are defined in a closure to pass required args (apart from LLM input) through it, as custom tools don't allow custom field assignment. # noqa
|
|
25
|
+
|
|
26
|
+
|
|
31
27
|
def get_exec_call_tool(llm, executor, model_kwargs) -> Callable:
|
|
32
28
|
def mdb_exec_call_tool(query: str) -> str:
|
|
33
29
|
try:
|
|
@@ -50,6 +46,7 @@ def get_exec_call_tool(llm, executor, model_kwargs) -> Callable:
|
|
|
50
46
|
return data
|
|
51
47
|
return mdb_exec_call_tool
|
|
52
48
|
|
|
49
|
+
|
|
53
50
|
def get_exec_metadata_tool(llm, executor, model_kwargs) -> Callable:
|
|
54
51
|
def mdb_exec_metadata_call(query: str) -> str:
|
|
55
52
|
try:
|
|
@@ -80,9 +77,9 @@ def get_exec_metadata_tool(llm, executor, model_kwargs) -> Callable:
|
|
|
80
77
|
data = f'Metadata for table {table_name}:\n'
|
|
81
78
|
fields = handler.get_columns(table_name).data_frame['Field'].to_list()
|
|
82
79
|
types = handler.get_columns(table_name).data_frame['Type'].to_list()
|
|
83
|
-
data +=
|
|
80
|
+
data += 'List of columns and types:\n'
|
|
84
81
|
data += '\n'.join([f'\tColumn: `{field}`\tType: `{typ}`' for field, typ in zip(fields, types)])
|
|
85
|
-
except:
|
|
82
|
+
except BaseException:
|
|
86
83
|
data = f'Table {table_name} not found.'
|
|
87
84
|
except Exception as e:
|
|
88
85
|
data = f"mindsdb tool failed with error:\n{str(e)}" # let the agent know
|
|
@@ -93,6 +90,7 @@ def get_exec_metadata_tool(llm, executor, model_kwargs) -> Callable:
|
|
|
93
90
|
return data
|
|
94
91
|
return mdb_exec_metadata_call
|
|
95
92
|
|
|
93
|
+
|
|
96
94
|
def get_mdb_write_tool(executor) -> Callable:
|
|
97
95
|
def mdb_write_call(query: str) -> str:
|
|
98
96
|
try:
|
|
@@ -105,6 +103,7 @@ def get_mdb_write_tool(executor) -> Callable:
|
|
|
105
103
|
return f"mindsdb write tool failed with error:\n{str(e)}"
|
|
106
104
|
return mdb_write_call
|
|
107
105
|
|
|
106
|
+
|
|
108
107
|
def _setup_standard_tools(tools, llm, model_kwargs):
|
|
109
108
|
executor = skill_tool.get_command_executor()
|
|
110
109
|
|
|
@@ -2,7 +2,7 @@ from mindsdb.integrations.libs.const import HANDLER_TYPE
|
|
|
2
2
|
|
|
3
3
|
from .__about__ import __version__ as version, __description__ as description
|
|
4
4
|
try:
|
|
5
|
-
from .leonardo_ai_handler import
|
|
5
|
+
from .leonardo_ai_handler import LeonardoAIHandler as Handler
|
|
6
6
|
import_error = None
|
|
7
7
|
except Exception as e:
|
|
8
8
|
Handler = None
|
|
@@ -9,13 +9,12 @@ from pathlib import Path
|
|
|
9
9
|
import lightwood
|
|
10
10
|
import pandas as pd
|
|
11
11
|
import requests
|
|
12
|
-
from lightwood.api.types import JsonAI
|
|
12
|
+
from lightwood.api.types import JsonAI
|
|
13
13
|
from pandas.core.frame import DataFrame
|
|
14
14
|
|
|
15
15
|
import mindsdb.utilities.profiler as profiler
|
|
16
16
|
from mindsdb.integrations.libs.const import PREDICTOR_STATUS
|
|
17
17
|
from mindsdb.integrations.utilities.utils import format_exception_error
|
|
18
|
-
from mindsdb.interfaces.model.functions import get_model_records
|
|
19
18
|
from mindsdb.interfaces.storage import db
|
|
20
19
|
from mindsdb.interfaces.storage.fs import RESOURCE_GROUP, FileStorage
|
|
21
20
|
from mindsdb.interfaces.storage.json import get_json_storage
|
|
@@ -26,6 +25,7 @@ from .utils import brack_to_mod, rep_recur, unpack_jsonai_old_args
|
|
|
26
25
|
|
|
27
26
|
logger = log.getLogger(__name__)
|
|
28
27
|
|
|
28
|
+
|
|
29
29
|
def create_learn_mark():
|
|
30
30
|
if os.name == 'posix':
|
|
31
31
|
p = Path(tempfile.gettempdir()).joinpath('mindsdb/learn_processes/')
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
import mindsdb.interfaces.storage.db as db
|
|
2
|
+
from mindsdb.integrations.libs.response import RESPONSE_TYPE
|
|
3
|
+
from mindsdb.interfaces.model.model_controller import ModelController
|
|
4
|
+
from mindsdb.interfaces.storage.fs import FsStore
|
|
5
|
+
from mindsdb.integrations.handlers.lightwood_handler.lightwood_handler.lightwood_handler import LightwoodHandler
|
|
6
|
+
from mindsdb.interfaces.database.integrations import integration_controller
|
|
7
|
+
from mindsdb.integrations.utilities.test_utils import PG_HANDLER_NAME, PG_CONNECTION_DATA
|
|
8
|
+
from mindsdb.utilities.config import Config
|
|
9
|
+
from mindsdb.migrations import migrate
|
|
1
10
|
import os
|
|
2
11
|
import time
|
|
3
12
|
import unittest
|
|
@@ -7,18 +16,9 @@ temp_dir = tempfile.mkdtemp(dir='/tmp/', prefix='lightwood_handler_test_')
|
|
|
7
16
|
os.environ['MINDSDB_STORAGE_DIR'] = os.environ.get('MINDSDB_STORAGE_DIR', temp_dir)
|
|
8
17
|
os.environ['MINDSDB_DB_CON'] = 'sqlite:///' + os.path.join(os.environ['MINDSDB_STORAGE_DIR'], 'mindsdb.sqlite3.db') + '?check_same_thread=False&timeout=30'
|
|
9
18
|
|
|
10
|
-
from mindsdb.migrations import migrate
|
|
11
19
|
migrate.migrate_to_head()
|
|
12
20
|
|
|
13
|
-
from mindsdb.utilities.config import Config
|
|
14
|
-
from mindsdb.integrations.utilities.test_utils import HandlerControllerMock, PG_HANDLER_NAME, PG_CONNECTION_DATA
|
|
15
|
-
from mindsdb.interfaces.database.integrations import integration_controller
|
|
16
|
-
from mindsdb.integrations.handlers.lightwood_handler.lightwood_handler.lightwood_handler import LightwoodHandler
|
|
17
21
|
# from mindsdb.integrations.handlers.lightwood_handler.lightwood_handler.utils import load_predictor
|
|
18
|
-
from mindsdb.interfaces.storage.fs import FsStore
|
|
19
|
-
from mindsdb.interfaces.model.model_controller import ModelController
|
|
20
|
-
from mindsdb.integrations.libs.response import RESPONSE_TYPE
|
|
21
|
-
import mindsdb.interfaces.storage.db as db
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
# TODO: drop all models and tables when closing tests
|
|
@@ -96,7 +96,7 @@ class LightwoodHandlerTest(unittest.TestCase):
|
|
|
96
96
|
self.assertTrue(response.type == RESPONSE_TYPE.OK)
|
|
97
97
|
|
|
98
98
|
def test_04_query_predictor_single_where_condition(self):
|
|
99
|
-
time.sleep(120)
|
|
99
|
+
time.sleep(120) # TODO
|
|
100
100
|
query = f"""
|
|
101
101
|
SELECT target
|
|
102
102
|
from {self.test_model_1}
|
|
@@ -255,4 +255,4 @@ class LightwoodHandlerTest(unittest.TestCase):
|
|
|
255
255
|
|
|
256
256
|
|
|
257
257
|
if __name__ == "__main__":
|
|
258
|
-
unittest.main(failfast=True)
|
|
258
|
+
unittest.main(failfast=True)
|
|
@@ -50,7 +50,7 @@ class LlamaIndexHandler(BaseMLEngine):
|
|
|
50
50
|
# workaround to create llama model without input data
|
|
51
51
|
if df is None or df.empty:
|
|
52
52
|
df = pd.DataFrame([{"text": ""}])
|
|
53
|
-
|
|
53
|
+
|
|
54
54
|
args_reader = args.get("using", {}).get("reader", self.default_reader)
|
|
55
55
|
|
|
56
56
|
if args_reader == "DFReader":
|
|
@@ -138,7 +138,7 @@ class LlamaIndexHandler(BaseMLEngine):
|
|
|
138
138
|
|
|
139
139
|
if input_column is None:
|
|
140
140
|
raise Exception(
|
|
141
|
-
|
|
141
|
+
"`input_column` must be provided at model creation time or through USING clause when predicting. Please try again."
|
|
142
142
|
) # noqa
|
|
143
143
|
|
|
144
144
|
if input_column not in df.columns:
|
|
@@ -151,7 +151,7 @@ class LlamaIndexHandler(BaseMLEngine):
|
|
|
151
151
|
index_path = self.model_storage.folder_get("context")
|
|
152
152
|
storage_context = StorageContext.from_defaults(persist_dir=index_path)
|
|
153
153
|
self._get_service_context()
|
|
154
|
-
|
|
154
|
+
|
|
155
155
|
index = load_index_from_storage(
|
|
156
156
|
storage_context
|
|
157
157
|
)
|
|
@@ -182,7 +182,7 @@ class LlamaIndexHandler(BaseMLEngine):
|
|
|
182
182
|
llm_kwargs["model_name"] = args["using"]["model_name"]
|
|
183
183
|
if "max_tokens" in args["using"]:
|
|
184
184
|
llm_kwargs["max_tokens"] = args["using"]["max_tokens"]
|
|
185
|
-
#only way this works is by sending the key through openai
|
|
185
|
+
# only way this works is by sending the key through openai
|
|
186
186
|
|
|
187
187
|
openai.api_key = openai_api_key
|
|
188
188
|
if Settings.llm is None:
|
|
@@ -2,6 +2,7 @@ from typing import List, Optional
|
|
|
2
2
|
from pydantic import BaseModel, field_validator, model_validator
|
|
3
3
|
from pydantic_settings import BaseSettings
|
|
4
4
|
|
|
5
|
+
|
|
5
6
|
class LlamaIndexConfig(BaseSettings):
|
|
6
7
|
"""
|
|
7
8
|
Model for LlamaIndexHandler settings.
|
|
@@ -12,14 +13,15 @@ class LlamaIndexConfig(BaseSettings):
|
|
|
12
13
|
default_reader (str): Default reader. Note this is custom data frame reader.
|
|
13
14
|
supported_reader (List[str]): Supported readers.
|
|
14
15
|
"""
|
|
15
|
-
DEFAULT_INDEX_CLASS
|
|
16
|
-
SUPPORTED_INDEXES
|
|
16
|
+
DEFAULT_INDEX_CLASS: str = "VectorStoreIndex"
|
|
17
|
+
SUPPORTED_INDEXES: List[str] = ["VectorStoreIndex"]
|
|
17
18
|
DEFAULT_READER: str = "DFReader"
|
|
18
|
-
SUPPORTED_READERS
|
|
19
|
+
SUPPORTED_READERS: List[str] = ["DFReader", "SimpleWebPageReader"]
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
llama_index_config = LlamaIndexConfig()
|
|
22
23
|
|
|
24
|
+
|
|
23
25
|
class LlamaIndexModel(BaseModel):
|
|
24
26
|
"""
|
|
25
27
|
Model for LlamaIndexHandler.
|
|
@@ -45,7 +47,7 @@ class LlamaIndexModel(BaseModel):
|
|
|
45
47
|
def validate_reader(cls, value):
|
|
46
48
|
if value not in llama_index_config.SUPPORTED_READERS:
|
|
47
49
|
raise ValueError(f"Reader {value} is not supported.")
|
|
48
|
-
|
|
50
|
+
|
|
49
51
|
return value
|
|
50
52
|
|
|
51
53
|
@field_validator('index_class')
|
|
@@ -53,13 +55,12 @@ class LlamaIndexModel(BaseModel):
|
|
|
53
55
|
def validate_index_class(cls, value):
|
|
54
56
|
if value not in llama_index_config.SUPPORTED_INDEXES:
|
|
55
57
|
raise ValueError(f"Index class {value} is not supported.")
|
|
56
|
-
|
|
58
|
+
|
|
57
59
|
return value
|
|
58
|
-
|
|
60
|
+
|
|
59
61
|
@model_validator(mode='after')
|
|
60
62
|
def validate_mode(self):
|
|
61
63
|
if self.mode == "conversational" and not all([self.user_column, self.assistant_column]):
|
|
62
|
-
raise ValueError(
|
|
63
|
-
|
|
64
|
-
return self
|
|
64
|
+
raise ValueError("Conversational mode requires user_column and assistant_column parameter")
|
|
65
65
|
|
|
66
|
+
return self
|
|
@@ -2,6 +2,7 @@ import unittest
|
|
|
2
2
|
from mindsdb.integrations.handlers.materialize_handler.materialize_handler import MaterializeHandler
|
|
3
3
|
from mindsdb.integrations.libs.response import RESPONSE_TYPE
|
|
4
4
|
|
|
5
|
+
|
|
5
6
|
class materializeHandlerTest(unittest.TestCase):
|
|
6
7
|
@classmethod
|
|
7
8
|
def setUpClass(cls):
|
|
@@ -21,36 +22,33 @@ class materializeHandlerTest(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
|
|
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
|
-
|
|
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
|
-
|
|
@@ -18,6 +18,7 @@ from mindsdb.integrations.libs.response import (
|
|
|
18
18
|
|
|
19
19
|
logger = log.getLogger(__name__)
|
|
20
20
|
|
|
21
|
+
|
|
21
22
|
class MatrixOneHandler(DatabaseHandler):
|
|
22
23
|
"""
|
|
23
24
|
This handler handles connection and execution of the MatrixOne statements.
|
|
@@ -25,7 +26,7 @@ class MatrixOneHandler(DatabaseHandler):
|
|
|
25
26
|
|
|
26
27
|
name = 'matrixone'
|
|
27
28
|
|
|
28
|
-
def __init__(self, name,connection_data: Optional[dict], **kwargs):
|
|
29
|
+
def __init__(self, name, connection_data: Optional[dict], **kwargs):
|
|
29
30
|
super().__init__(name)
|
|
30
31
|
self.mysql_url = None
|
|
31
32
|
self.parser = parse_sql
|
|
@@ -158,11 +159,10 @@ class MatrixOneHandler(DatabaseHandler):
|
|
|
158
159
|
"""
|
|
159
160
|
q = f"SHOW COLUMNS FROM {table_name};"
|
|
160
161
|
result = self.native_query(q)
|
|
161
|
-
df=result.data_frame
|
|
162
|
-
result.data_frame=df.rename(columns={
|
|
162
|
+
df = result.data_frame
|
|
163
|
+
result.data_frame = df.rename(columns={
|
|
163
164
|
df.columns[0]: 'COLUMN_NAME',
|
|
164
165
|
df.columns[1]: 'DATA TYPE'
|
|
165
166
|
})
|
|
166
167
|
|
|
167
|
-
|
|
168
168
|
return result
|
|
@@ -19,38 +19,37 @@ class MatrixOneHandlerTest(unittest.TestCase):
|
|
|
19
19
|
}
|
|
20
20
|
cls.handler = MatrixOneHandler('test_mysql_handler', cls.kwargs)
|
|
21
21
|
|
|
22
|
-
|
|
23
22
|
def test_0_connect(self):
|
|
24
23
|
self.handler.connect()
|
|
25
24
|
|
|
26
25
|
def test_1_drop_table(self):
|
|
27
26
|
res = self.handler.query("DROP TABLE IF EXISTS PREM;")
|
|
28
|
-
assert res.type is
|
|
27
|
+
assert res.type is not RESPONSE_TYPE.ERROR
|
|
29
28
|
|
|
30
29
|
def test_2_create_table(self):
|
|
31
30
|
res = self.handler.query("CREATE TABLE IF NOT EXISTS PREM (Premi varchar(50));")
|
|
32
|
-
assert res.type is not
|
|
31
|
+
assert res.type is not RESPONSE_TYPE.ERROR
|
|
33
32
|
|
|
34
33
|
def test_3_insert_table(self):
|
|
35
34
|
res = self.handler.query("INSERT INTO PREM VALUES('Radha <3 Krishna');")
|
|
36
|
-
assert res.type is not
|
|
35
|
+
assert res.type is not RESPONSE_TYPE.ERROR
|
|
37
36
|
|
|
38
37
|
def test_4_get_tables(self):
|
|
39
38
|
tables = self.handler.get_tables()
|
|
40
|
-
assert tables.type is not
|
|
39
|
+
assert tables.type is not RESPONSE_TYPE.ERROR
|
|
41
40
|
|
|
42
41
|
def test_5_select_query(self):
|
|
43
42
|
query = "SELECT * FROM PREM;"
|
|
44
43
|
result = self.handler.native_query(query)
|
|
45
|
-
assert result.type is not
|
|
46
|
-
|
|
44
|
+
assert result.type is not RESPONSE_TYPE.ERROR
|
|
45
|
+
|
|
47
46
|
def test_6_get_columns(self):
|
|
48
47
|
result = self.handler.get_columns('PREM')
|
|
49
|
-
assert result.type is not
|
|
48
|
+
assert result.type is not RESPONSE_TYPE.ERROR
|
|
50
49
|
|
|
51
50
|
def test_7_check_connection(self):
|
|
52
51
|
self.handler.check_connection()
|
|
53
52
|
|
|
54
53
|
|
|
55
54
|
if __name__ == '__main__':
|
|
56
|
-
unittest.main()
|
|
55
|
+
unittest.main()
|
|
@@ -4,31 +4,31 @@ from mindsdb.integrations.libs.const import HANDLER_CONNECTION_ARG_TYPE as ARG_T
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
connection_args = OrderedDict(
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
7
|
+
host={
|
|
8
|
+
'type': ARG_TYPE.STR,
|
|
9
|
+
'description': 'The host name or IP address of the SAP MaxDB server.'
|
|
10
|
+
},
|
|
11
|
+
port={
|
|
12
|
+
'type': ARG_TYPE.INT,
|
|
13
|
+
'description': 'The TCP/IP port of the SAP MaxDB. Must be an integer.'
|
|
14
|
+
},
|
|
15
|
+
database={
|
|
16
|
+
'type': ARG_TYPE.STR,
|
|
17
|
+
'description': 'The database name to use when connecting with the SAP MaxDB server.'
|
|
18
|
+
},
|
|
19
|
+
jdbc_location={
|
|
20
|
+
'type': ARG_TYPE.STR,
|
|
21
|
+
'description': 'The location of the jar file which contains the JDBC class.'
|
|
22
|
+
},
|
|
23
|
+
user={
|
|
24
|
+
'type': ARG_TYPE.STR,
|
|
25
|
+
'description': 'The user name used to authenticate with the SAP MaxDB server.'
|
|
26
|
+
},
|
|
27
|
+
password={
|
|
28
|
+
'type': ARG_TYPE.PWD,
|
|
29
|
+
'description': 'The password to authenticate the user with the SAP MaxDB server.',
|
|
30
|
+
'secret': True
|
|
31
|
+
}
|
|
32
32
|
)
|
|
33
33
|
|
|
34
34
|
|
|
@@ -11,6 +11,7 @@ from mindsdb_sql_parser import parse_sql
|
|
|
11
11
|
|
|
12
12
|
logger = log.getLogger(__name__)
|
|
13
13
|
|
|
14
|
+
|
|
14
15
|
class MediaWikiHandler(APIHandler):
|
|
15
16
|
"""
|
|
16
17
|
The MediaWiki handler implementation.
|
|
@@ -65,7 +66,7 @@ class MediaWikiHandler(APIHandler):
|
|
|
65
66
|
self.connect()
|
|
66
67
|
response.success = True
|
|
67
68
|
except Exception as e:
|
|
68
|
-
logger.error(
|
|
69
|
+
logger.error('Error connecting to MediaWiki!')
|
|
69
70
|
response.error_message = str(e)
|
|
70
71
|
|
|
71
72
|
self.is_connected = response.success
|
|
@@ -84,4 +85,4 @@ class MediaWikiHandler(APIHandler):
|
|
|
84
85
|
Request status
|
|
85
86
|
"""
|
|
86
87
|
ast = parse_sql(query)
|
|
87
|
-
return self.query(ast)
|
|
88
|
+
return self.query(ast)
|
|
@@ -11,9 +11,9 @@ except Exception as e:
|
|
|
11
11
|
title = 'Mendeley'
|
|
12
12
|
name = 'mendeley'
|
|
13
13
|
type = HANDLER_TYPE.DATA
|
|
14
|
-
icon_path= 'icon.svg'
|
|
14
|
+
icon_path = 'icon.svg'
|
|
15
15
|
permanent = False
|
|
16
16
|
|
|
17
17
|
__all__ = [
|
|
18
|
-
'Handler', 'version', 'name', 'type', 'title', 'description', 'import_error','icon_path'
|
|
18
|
+
'Handler', 'version', 'name', 'type', 'title', 'description', 'import_error', 'icon_path'
|
|
19
19
|
]
|