MindsDB 25.5.3.0__py3-none-any.whl → 25.5.4.1__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 +8 -8
- mindsdb/__main__.py +127 -79
- mindsdb/api/a2a/__init__.py +0 -0
- mindsdb/api/a2a/__main__.py +144 -0
- mindsdb/api/a2a/agent.py +308 -0
- mindsdb/api/a2a/common/__init__.py +0 -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 +86 -0
- mindsdb/api/a2a/task_manager.py +560 -0
- mindsdb/api/executor/command_executor.py +185 -309
- 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/config.py +61 -86
- 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/byom_handler/requirements.txt +1 -2
- 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/lancedb_handler/requirements.txt +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/litellm_handler/litellm_handler.py +37 -20
- 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/llm/config.py +13 -0
- mindsdb/integrations/libs/llm/utils.py +37 -65
- 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/rag/rerankers/base_reranker.py +230 -227
- mindsdb/integrations/utilities/utils.py +3 -3
- mindsdb/interfaces/agents/agents_controller.py +164 -1
- mindsdb/interfaces/agents/constants.py +32 -13
- mindsdb/interfaces/agents/langchain_agent.py +106 -95
- mindsdb/interfaces/agents/mindsdb_database_agent.py +101 -2
- mindsdb/interfaces/knowledge_base/controller.py +250 -216
- 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 +287 -216
- mindsdb/utilities/starters.py +13 -0
- {mindsdb-25.5.3.0.dist-info → mindsdb-25.5.4.1.dist-info}/METADATA +646 -698
- {mindsdb-25.5.3.0.dist-info → mindsdb-25.5.4.1.dist-info}/RECORD +312 -295
- {mindsdb-25.5.3.0.dist-info → mindsdb-25.5.4.1.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.1.dist-info}/licenses/LICENSE +0 -0
- {mindsdb-25.5.3.0.dist-info → mindsdb-25.5.4.1.dist-info}/top_level.txt +0 -0
|
@@ -27,13 +27,13 @@ connection_args = OrderedDict(
|
|
|
27
27
|
'description': 'The password to authenticate.',
|
|
28
28
|
'secret': True
|
|
29
29
|
},
|
|
30
|
-
|
|
30
|
+
|
|
31
31
|
)
|
|
32
32
|
|
|
33
33
|
connection_args_example = OrderedDict(
|
|
34
|
-
server_name
|
|
35
|
-
port
|
|
36
|
-
database_name
|
|
37
|
-
username
|
|
38
|
-
password
|
|
34
|
+
server_name='localhost',
|
|
35
|
+
port=9001,
|
|
36
|
+
database_name='xdb',
|
|
37
|
+
username='SA',
|
|
38
|
+
password='password'
|
|
39
39
|
)
|
|
@@ -14,6 +14,7 @@ from mindsdb.utilities.render.sqlalchemy_render import SqlalchemyRender
|
|
|
14
14
|
|
|
15
15
|
logger = log.getLogger(__name__)
|
|
16
16
|
|
|
17
|
+
|
|
17
18
|
class HSQLDBHandler(DatabaseHandler):
|
|
18
19
|
"""
|
|
19
20
|
This handler handles connection and execution of the HyperSQL statements.
|
|
@@ -21,7 +22,7 @@ class HSQLDBHandler(DatabaseHandler):
|
|
|
21
22
|
|
|
22
23
|
name = 'hsqldb'
|
|
23
24
|
|
|
24
|
-
def __init__(self, name: str,
|
|
25
|
+
def __init__(self, name: str, **kwargs):
|
|
25
26
|
"""
|
|
26
27
|
Initialize the handler.
|
|
27
28
|
Args:
|
|
@@ -162,7 +163,7 @@ class HSQLDBHandler(DatabaseHandler):
|
|
|
162
163
|
cursor = connection.cursor()
|
|
163
164
|
cursor.execute("SELECT * FROM information_schema.tables WHERE table_schema NOT IN ('information_schema', 'pg_catalog') AND table_type='BASE TABLE'")
|
|
164
165
|
results = cursor.fetchall()
|
|
165
|
-
df = pd.DataFrame([x[2] for x in results], columns=['table_name'])
|
|
166
|
+
df = pd.DataFrame([x[2] for x in results], columns=['table_name']) # Workaround since cursor.tables() wont work with postgres driver
|
|
166
167
|
response = Response(
|
|
167
168
|
RESPONSE_TYPE.TABLE,
|
|
168
169
|
df
|
|
@@ -181,7 +182,7 @@ class HSQLDBHandler(DatabaseHandler):
|
|
|
181
182
|
|
|
182
183
|
connection = self.connect()
|
|
183
184
|
cursor = connection.cursor()
|
|
184
|
-
query = f'SELECT * FROM information_schema.columns WHERE table_name ={table_name}'
|
|
185
|
+
query = f'SELECT * FROM information_schema.columns WHERE table_name ={table_name}' # Workaround since cursor.columns() wont work with postgres driver
|
|
185
186
|
cursor.execute(query)
|
|
186
187
|
results = cursor.fetchall()
|
|
187
188
|
df = pd.DataFrame(
|
|
@@ -1,20 +1,13 @@
|
|
|
1
1
|
import json
|
|
2
|
-
import os
|
|
3
2
|
from typing import Optional, Dict
|
|
4
|
-
|
|
5
3
|
import pandas as pd
|
|
6
|
-
|
|
7
4
|
from huggingface_hub import HfApi
|
|
8
5
|
from huggingface_hub import hf_hub_download
|
|
9
|
-
|
|
10
6
|
from hugging_py_face import NLP, ComputerVision, AudioProcessing, get_in_df_supported_tasks
|
|
11
7
|
|
|
12
|
-
from mindsdb.utilities.config import Config
|
|
13
8
|
from mindsdb.integrations.libs.base import BaseMLEngine
|
|
14
|
-
|
|
15
|
-
from .exceptions import UnsupportedTaskException, InsufficientParametersException
|
|
16
|
-
|
|
17
9
|
from mindsdb.integrations.utilities.handler_utils import get_api_key
|
|
10
|
+
from .exceptions import UnsupportedTaskException, InsufficientParametersException
|
|
18
11
|
|
|
19
12
|
|
|
20
13
|
class HuggingFaceInferenceAPIHandler(BaseMLEngine):
|
|
@@ -117,7 +117,7 @@ class HuggingFaceHandler(BaseMLEngine):
|
|
|
117
117
|
try:
|
|
118
118
|
pipeline = transformers.pipeline(task=args['task_proper'], model=hf_model_storage_path,
|
|
119
119
|
tokenizer=hf_model_storage_path)
|
|
120
|
-
logger.debug(
|
|
120
|
+
logger.debug('Model already downloaded!')
|
|
121
121
|
####
|
|
122
122
|
# Otherwise download it
|
|
123
123
|
except (ValueError, OSError):
|
|
@@ -154,10 +154,10 @@ class HuggingFaceHandler(BaseMLEngine):
|
|
|
154
154
|
labels_map[labels_default[num]] = labels_default[num]
|
|
155
155
|
args["labels_map"] = labels_map
|
|
156
156
|
|
|
157
|
-
|
|
157
|
+
# store and persist in model folder
|
|
158
158
|
self.model_storage.json_set("args", args)
|
|
159
159
|
|
|
160
|
-
|
|
160
|
+
# persist changes to handler folder
|
|
161
161
|
self.engine_storage.folder_sync(model_name)
|
|
162
162
|
|
|
163
163
|
# todo move infer tasks to a seperate file
|
|
@@ -257,7 +257,7 @@ class HuggingFaceHandler(BaseMLEngine):
|
|
|
257
257
|
"fill-mask": self.predict_fill_mask,
|
|
258
258
|
}
|
|
259
259
|
|
|
260
|
-
|
|
260
|
+
# get stuff from model folder
|
|
261
261
|
args = self.model_storage.json_get("args")
|
|
262
262
|
|
|
263
263
|
task = args["task"]
|
|
@@ -310,11 +310,11 @@ class HuggingFaceHandler(BaseMLEngine):
|
|
|
310
310
|
continue
|
|
311
311
|
elif truncation_policy == "left":
|
|
312
312
|
tokens = tokens[
|
|
313
|
-
-max_tokens + 1
|
|
313
|
+
-max_tokens + 1: -1
|
|
314
314
|
] # cut 2 empty tokens from left and right
|
|
315
315
|
else:
|
|
316
316
|
tokens = tokens[
|
|
317
|
-
1
|
|
317
|
+
1: max_tokens - 1
|
|
318
318
|
] # cut 2 empty tokens from left and right
|
|
319
319
|
|
|
320
320
|
item = pipeline.tokenizer.decode(tokens)
|
|
@@ -18,6 +18,7 @@ from mindsdb.integrations.libs.response import (
|
|
|
18
18
|
|
|
19
19
|
logger = log.getLogger(__name__)
|
|
20
20
|
|
|
21
|
+
|
|
21
22
|
class IgniteHandler(DatabaseHandler):
|
|
22
23
|
"""
|
|
23
24
|
This handler handles connection and execution of the Apache Ignite statements.
|
|
@@ -105,7 +106,7 @@ class IgniteHandler(DatabaseHandler):
|
|
|
105
106
|
self.connect()
|
|
106
107
|
response.success = True
|
|
107
108
|
except Exception as e:
|
|
108
|
-
logger.error(
|
|
109
|
+
logger.error('Error connecting to Apache Ignite!')
|
|
109
110
|
response.error_message = str(e)
|
|
110
111
|
finally:
|
|
111
112
|
if response.success is True and need_to_close:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from typing import Optional
|
|
2
2
|
|
|
3
3
|
import pandas as pd
|
|
4
|
-
from impala import dbapi as db
|
|
4
|
+
from impala import dbapi as db, sqlalchemy as SA
|
|
5
5
|
|
|
6
6
|
from mindsdb_sql_parser import parse_sql
|
|
7
7
|
from mindsdb.utilities.render.sqlalchemy_render import SqlalchemyRender
|
|
@@ -29,7 +29,6 @@ class ImpalaHandler(DatabaseHandler):
|
|
|
29
29
|
def __init__(self, name: str, connection_data: Optional[dict], **kwargs):
|
|
30
30
|
super().__init__(name)
|
|
31
31
|
|
|
32
|
-
|
|
33
32
|
self.parser = parse_sql
|
|
34
33
|
self.dialect = 'impala'
|
|
35
34
|
self.kwargs = kwargs
|
|
@@ -38,20 +37,18 @@ class ImpalaHandler(DatabaseHandler):
|
|
|
38
37
|
self.connection = None
|
|
39
38
|
self.is_connected = False
|
|
40
39
|
|
|
41
|
-
|
|
42
|
-
|
|
43
40
|
def connect(self):
|
|
44
41
|
if self.is_connected is True:
|
|
45
42
|
return self.connection
|
|
46
43
|
|
|
47
44
|
config = {
|
|
48
45
|
'host': self.connection_data.get('host'),
|
|
49
|
-
'port': self.connection_data.get('port',21050),
|
|
46
|
+
'port': self.connection_data.get('port', 21050),
|
|
50
47
|
'user': self.connection_data.get('user'),
|
|
51
48
|
'password': self.connection_data.get('password'),
|
|
52
49
|
'database': self.connection_data.get('database'),
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
|
|
51
|
+
|
|
55
52
|
}
|
|
56
53
|
|
|
57
54
|
connection = db.connect(**config)
|
|
@@ -67,7 +64,7 @@ class ImpalaHandler(DatabaseHandler):
|
|
|
67
64
|
return
|
|
68
65
|
|
|
69
66
|
def check_connection(self) -> StatusResponse:
|
|
70
|
-
|
|
67
|
+
|
|
71
68
|
result = StatusResponse(False)
|
|
72
69
|
need_to_close = self.is_connected is False
|
|
73
70
|
|
|
@@ -100,7 +97,7 @@ class ImpalaHandler(DatabaseHandler):
|
|
|
100
97
|
cur.execute(query)
|
|
101
98
|
result = cur.fetchall()
|
|
102
99
|
if cur.has_result_set:
|
|
103
|
-
|
|
100
|
+
|
|
104
101
|
response = Response(
|
|
105
102
|
RESPONSE_TYPE.TABLE,
|
|
106
103
|
pd.DataFrame(
|
|
@@ -137,7 +134,7 @@ class ImpalaHandler(DatabaseHandler):
|
|
|
137
134
|
Get a list with all of the tabels in Impala
|
|
138
135
|
"""
|
|
139
136
|
q = "SHOW TABLES;"
|
|
140
|
-
result= self.native_query(q)
|
|
137
|
+
result = self.native_query(q)
|
|
141
138
|
df = result.data_frame.rename(columns={'name': 'TABLE_NAME'})
|
|
142
139
|
result.data_frame = df
|
|
143
140
|
|
|
@@ -149,8 +146,8 @@ class ImpalaHandler(DatabaseHandler):
|
|
|
149
146
|
"""
|
|
150
147
|
q = f"DESCRIBE {table_name};"
|
|
151
148
|
|
|
152
|
-
result= self.native_query(q)
|
|
153
|
-
df = result.data_frame.iloc[:,0:2].rename(columns={'name': 'COLUMN_NAME', 'type': 'Data_Type'})
|
|
149
|
+
result = self.native_query(q)
|
|
150
|
+
df = result.data_frame.iloc[:, 0:2].rename(columns={'name': 'COLUMN_NAME', 'type': 'Data_Type'})
|
|
154
151
|
result.data_frame = df
|
|
155
152
|
|
|
156
153
|
return result
|
|
@@ -7,12 +7,12 @@ class ImpalaHandlerTest(unittest.TestCase):
|
|
|
7
7
|
@classmethod
|
|
8
8
|
def setUpClass(cls):
|
|
9
9
|
cls.kwargs = {
|
|
10
|
-
'user':'<UID>',
|
|
11
|
-
'password':'<P455w0rd>',
|
|
12
|
-
'host':'127.0.0.1',
|
|
13
|
-
'port':21050,
|
|
14
|
-
'database':'temp'
|
|
15
|
-
|
|
10
|
+
'user': '<UID>',
|
|
11
|
+
'password': '<P455w0rd>',
|
|
12
|
+
'host': '127.0.0.1',
|
|
13
|
+
'port': 21050,
|
|
14
|
+
'database': 'temp'
|
|
15
|
+
|
|
16
16
|
}
|
|
17
17
|
cls.handler = ImpalaHandler('test_impala_handler', **cls.kwargs)
|
|
18
18
|
|
|
@@ -21,25 +21,25 @@ class ImpalaHandlerTest(unittest.TestCase):
|
|
|
21
21
|
|
|
22
22
|
def test_1_connect(self):
|
|
23
23
|
assert self.handler.connect()
|
|
24
|
-
|
|
24
|
+
|
|
25
25
|
def test_2_create_table(self):
|
|
26
26
|
query = "CREATE Table Car(Name Varchar, Price Integer);"
|
|
27
27
|
result = self.handler.query(query)
|
|
28
|
-
assert result.type is not RESPONSE_TYPE.ERROR
|
|
28
|
+
assert result.type is not RESPONSE_TYPE.ERROR
|
|
29
29
|
|
|
30
30
|
def test_3_insert(self):
|
|
31
31
|
query = "INSERT INTO Car ('Tata SUV', 860000)"
|
|
32
32
|
result = self.handler.query(query)
|
|
33
|
-
assert result.type is not RESPONSE_TYPE.ERROR
|
|
33
|
+
assert result.type is not RESPONSE_TYPE.ERROR
|
|
34
34
|
|
|
35
35
|
def test_4_native_query_select(self):
|
|
36
36
|
query = "SELECT * FROM Car;"
|
|
37
37
|
result = self.handler.query(query)
|
|
38
|
-
assert result.type is RESPONSE_TYPE.TABLE
|
|
38
|
+
assert result.type is RESPONSE_TYPE.TABLE
|
|
39
39
|
|
|
40
40
|
def test_5_get_tables(self):
|
|
41
41
|
tables = self.handler.get_tables()
|
|
42
|
-
assert tables.type is
|
|
42
|
+
assert tables.type is RESPONSE_TYPE.TABLE
|
|
43
43
|
|
|
44
44
|
def test_6_get_columns(self):
|
|
45
45
|
columns = self.handler.get_columns('Car')
|
|
@@ -8,9 +8,9 @@ from mindsdb.utilities import log
|
|
|
8
8
|
from mindsdb_sql_parser import parse_sql
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
|
|
12
11
|
logger = log.getLogger(__name__)
|
|
13
12
|
|
|
13
|
+
|
|
14
14
|
class InfluxDBHandler(APIHandler):
|
|
15
15
|
"""InfluxDB handler implementation"""
|
|
16
16
|
|
|
@@ -34,7 +34,6 @@ class InfluxDBHandler(APIHandler):
|
|
|
34
34
|
|
|
35
35
|
influxdb_tables_data = InfluxDBTables(self)
|
|
36
36
|
self._register_table("tables", influxdb_tables_data)
|
|
37
|
-
|
|
38
37
|
|
|
39
38
|
def connect(self):
|
|
40
39
|
"""Set up the connection required by the handler.
|
|
@@ -44,17 +43,15 @@ class InfluxDBHandler(APIHandler):
|
|
|
44
43
|
|
|
45
44
|
Raises Expection if ping check fails
|
|
46
45
|
"""
|
|
47
|
-
|
|
46
|
+
|
|
48
47
|
if self.is_connected is True:
|
|
49
48
|
return self.connection
|
|
50
|
-
|
|
51
|
-
self.connection=InfluxDBClient3(host=self.connection_data['influxdb_url'],token=self.connection_data['influxdb_token'],org=self.connection_data.get('org'))
|
|
52
49
|
|
|
50
|
+
self.connection = InfluxDBClient3(host=self.connection_data['influxdb_url'], token=self.connection_data['influxdb_token'], org=self.connection_data.get('org'))
|
|
53
51
|
|
|
54
52
|
self.is_connected = True
|
|
55
53
|
|
|
56
54
|
return self.connection
|
|
57
|
-
|
|
58
55
|
|
|
59
56
|
def check_connection(self) -> StatusResponse:
|
|
60
57
|
"""Check connection to the handler.
|
|
@@ -90,16 +87,16 @@ class InfluxDBHandler(APIHandler):
|
|
|
90
87
|
ast = parse_sql(query)
|
|
91
88
|
return self.query(ast)
|
|
92
89
|
|
|
93
|
-
def call_influxdb_tables(self,query):
|
|
90
|
+
def call_influxdb_tables(self, query):
|
|
94
91
|
"""Pulls all the records from the given InfluxDB table and returns it select()
|
|
95
|
-
|
|
92
|
+
|
|
96
93
|
Returns
|
|
97
94
|
-------
|
|
98
|
-
pd.DataFrame of all the records of the particular InfluxDB
|
|
95
|
+
pd.DataFrame of all the records of the particular InfluxDB
|
|
99
96
|
"""
|
|
100
|
-
influx_connection=self.connect()
|
|
97
|
+
influx_connection = self.connect()
|
|
101
98
|
if query is None:
|
|
102
|
-
query='SELECT * FROM '+ f"{self.connection_data['influxdb_table_name']}"
|
|
103
|
-
|
|
104
|
-
table=influx_connection.query(query=query,database=self.connection_data['influxdb_db_name'], language='sql')
|
|
99
|
+
query = 'SELECT * FROM ' + f"{self.connection_data['influxdb_table_name']}"
|
|
100
|
+
|
|
101
|
+
table = influx_connection.query(query=query, database=self.connection_data['influxdb_db_name'], language='sql')
|
|
105
102
|
return table.to_pandas()
|
|
@@ -3,7 +3,6 @@ import pandas as pd
|
|
|
3
3
|
from typing import List
|
|
4
4
|
|
|
5
5
|
from mindsdb.integrations.libs.api_handler import APITable
|
|
6
|
-
from mindsdb.integrations.utilities.sql_utils import extract_comparison_conditions
|
|
7
6
|
from mindsdb.utilities import log
|
|
8
7
|
|
|
9
8
|
from mindsdb_sql_parser import ast
|
|
@@ -12,6 +11,7 @@ from mindsdb.integrations.utilities.handlers.query_utilities.select_query_utilit
|
|
|
12
11
|
|
|
13
12
|
logger = log.getLogger(__name__)
|
|
14
13
|
|
|
14
|
+
|
|
15
15
|
class InfluxDBTables(APITable):
|
|
16
16
|
"""InfluxDB Tables implementation"""
|
|
17
17
|
|
|
@@ -29,23 +29,23 @@ class InfluxDBTables(APITable):
|
|
|
29
29
|
ValueError
|
|
30
30
|
If the query contains an unsupported condition
|
|
31
31
|
"""
|
|
32
|
-
|
|
33
|
-
table_name=self.handler.connection_data['influxdb_table_name']
|
|
32
|
+
|
|
33
|
+
table_name = self.handler.connection_data['influxdb_table_name']
|
|
34
34
|
select_statement_parser = SELECTQueryParser(
|
|
35
35
|
query,
|
|
36
36
|
"tables",
|
|
37
37
|
self.get_columns()
|
|
38
38
|
)
|
|
39
39
|
selected_columns, where_conditions, order_by_conditions, _ = select_statement_parser.parse_query()
|
|
40
|
-
|
|
40
|
+
|
|
41
41
|
try:
|
|
42
42
|
selected_columns.remove("name")
|
|
43
43
|
selected_columns.remove("tags")
|
|
44
44
|
except Exception as e:
|
|
45
45
|
logger.warn(e)
|
|
46
46
|
|
|
47
|
-
formatted_query=self.get_select_query(table_name,selected_columns,where_conditions,order_by_conditions,query.limit)
|
|
48
|
-
influxdb_tables_df
|
|
47
|
+
formatted_query = self.get_select_query(table_name, selected_columns, where_conditions, order_by_conditions, query.limit)
|
|
48
|
+
influxdb_tables_df = self.handler.call_influxdb_tables(formatted_query)
|
|
49
49
|
|
|
50
50
|
return influxdb_tables_df
|
|
51
51
|
|
|
@@ -56,26 +56,26 @@ class InfluxDBTables(APITable):
|
|
|
56
56
|
List[str]
|
|
57
57
|
List of columns
|
|
58
58
|
"""
|
|
59
|
-
|
|
59
|
+
|
|
60
60
|
dataframe = self.handler.call_influxdb_tables(f"SELECT * FROM {self.handler.connection_data['influxdb_table_name']} LIMIT 1")
|
|
61
61
|
|
|
62
62
|
return list(dataframe.columns)
|
|
63
|
-
|
|
63
|
+
|
|
64
|
+
def get_select_query(self, table_name, selected_columns, where_conditions, order_by_conditions, result_limit):
|
|
64
65
|
"""Gets Well formed Query
|
|
65
66
|
Returns
|
|
66
67
|
-------
|
|
67
68
|
str
|
|
68
69
|
"""
|
|
69
|
-
columns=", ".join([f'"{column}"' for column in selected_columns])
|
|
70
|
-
query=f'SELECT {columns} FROM "{table_name}"'
|
|
71
|
-
if(where_conditions is not None and len(where_conditions)>0):
|
|
72
|
-
query+=" WHERE "
|
|
73
|
-
query+=" AND ".join([f"{i[1]} {i[0]} {i[2]}" for i in where_conditions])
|
|
74
|
-
if (order_by_conditions!={} and order_by_conditions['columns'] is not None and len(order_by_conditions['columns'])>0):
|
|
75
|
-
query+=" ORDER BY "
|
|
76
|
-
query+=", ".join([f'{column_name} {"ASC"if asc else "DESC"}' for column_name,asc in zip(order_by_conditions['columns'],order_by_conditions['ascending'])]
|
|
77
|
-
if(result_limit is not None):
|
|
78
|
-
query+=f" LIMIT {result_limit}"
|
|
79
|
-
query+=";"
|
|
70
|
+
columns = ", ".join([f'"{column}"' for column in selected_columns])
|
|
71
|
+
query = f'SELECT {columns} FROM "{table_name}"'
|
|
72
|
+
if (where_conditions is not None and len(where_conditions) > 0):
|
|
73
|
+
query += " WHERE "
|
|
74
|
+
query += " AND ".join([f"{i[1]} {i[0]} {i[2]}" for i in where_conditions])
|
|
75
|
+
if (order_by_conditions != {} and order_by_conditions['columns'] is not None and len(order_by_conditions['columns']) > 0):
|
|
76
|
+
query += " ORDER BY "
|
|
77
|
+
query += ", ".join([f'{column_name} {"ASC"if asc else "DESC"}' for column_name, asc in zip(order_by_conditions['columns'], order_by_conditions['ascending'])])
|
|
78
|
+
if (result_limit is not None):
|
|
79
|
+
query += f" LIMIT {result_limit}"
|
|
80
|
+
query += ";"
|
|
80
81
|
return query
|
|
81
|
-
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
__title__ =
|
|
2
|
-
__package_name__ =
|
|
3
|
-
__version__ =
|
|
1
|
+
__title__ = "MindsDB IBM Informix handler"
|
|
2
|
+
__package_name__ = "mindsdb_informix_handler"
|
|
3
|
+
__version__ = "0.0.1"
|
|
4
4
|
__description__ = "MindsDB handler for IBM Informix"
|
|
5
|
-
__author__ =
|
|
6
|
-
__github__ =
|
|
7
|
-
__pypi__ =
|
|
8
|
-
__license__ =
|
|
9
|
-
__copyright__ =
|
|
5
|
+
__author__ = "Parthiv Makwana"
|
|
6
|
+
__github__ = "https://github.com/mindsdb/mindsdb"
|
|
7
|
+
__pypi__ = "https://pypi.org/project/mindsdb/"
|
|
8
|
+
__license__ = "MIT"
|
|
9
|
+
__copyright__ = "Copyright 2022- mindsdb"
|
|
@@ -2,6 +2,7 @@ from mindsdb.integrations.libs.const import HANDLER_TYPE
|
|
|
2
2
|
|
|
3
3
|
try:
|
|
4
4
|
from .informix_handler import InformixHandler as Handler
|
|
5
|
+
|
|
5
6
|
import_error = None
|
|
6
7
|
except Exception as e:
|
|
7
8
|
Handler = None
|
|
@@ -9,12 +10,18 @@ except Exception as e:
|
|
|
9
10
|
from .__about__ import __version__ as version, __description__ as description
|
|
10
11
|
|
|
11
12
|
|
|
12
|
-
title =
|
|
13
|
-
name =
|
|
13
|
+
title = "IBM Informix"
|
|
14
|
+
name = "informix"
|
|
14
15
|
type = HANDLER_TYPE.DATA
|
|
15
|
-
icon_path =
|
|
16
|
+
icon_path = "icon.svg"
|
|
16
17
|
|
|
17
18
|
__all__ = [
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
"Handler",
|
|
20
|
+
"version",
|
|
21
|
+
"name",
|
|
22
|
+
"type",
|
|
23
|
+
"title",
|
|
24
|
+
"description",
|
|
25
|
+
"import_error",
|
|
26
|
+
"icon_path",
|
|
20
27
|
]
|