MindsDB 25.3.4.0__py3-none-any.whl → 25.3.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 +2 -2
- mindsdb/integrations/handlers/confluence_handler/confluence_api_client.py +164 -0
- mindsdb/integrations/handlers/confluence_handler/confluence_handler.py +54 -59
- mindsdb/integrations/handlers/confluence_handler/confluence_tables.py +753 -0
- mindsdb/integrations/handlers/confluence_handler/connection_args.py +8 -8
- mindsdb/integrations/handlers/langchain_handler/requirements.txt +1 -1
- mindsdb/integrations/handlers/lightwood_handler/requirements.txt +3 -3
- mindsdb/integrations/handlers/litellm_handler/requirements.txt +1 -1
- mindsdb/integrations/handlers/llama_index_handler/requirements.txt +1 -1
- mindsdb/integrations/handlers/mysql_handler/mysql_handler.py +2 -0
- mindsdb/integrations/handlers/ray_serve_handler/ray_serve_handler.py +18 -16
- mindsdb/integrations/handlers/snowflake_handler/snowflake_handler.py +26 -1
- {mindsdb-25.3.4.0.dist-info → mindsdb-25.3.4.1.dist-info}/METADATA +228 -231
- {mindsdb-25.3.4.0.dist-info → mindsdb-25.3.4.1.dist-info}/RECORD +17 -17
- {mindsdb-25.3.4.0.dist-info → mindsdb-25.3.4.1.dist-info}/WHEEL +1 -1
- mindsdb/integrations/handlers/confluence_handler/confluence_table.py +0 -193
- mindsdb/integrations/handlers/confluence_handler/requirements.txt +0 -1
- {mindsdb-25.3.4.0.dist-info → mindsdb-25.3.4.1.dist-info}/licenses/LICENSE +0 -0
- {mindsdb-25.3.4.0.dist-info → mindsdb-25.3.4.1.dist-info}/top_level.txt +0 -0
|
@@ -4,29 +4,29 @@ from mindsdb.integrations.libs.const import HANDLER_CONNECTION_ARG_TYPE as ARG_T
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
connection_args = OrderedDict(
|
|
7
|
-
|
|
7
|
+
api_base={
|
|
8
8
|
"type": ARG_TYPE.URL,
|
|
9
|
-
"description": "Confluence
|
|
10
|
-
"label": "
|
|
9
|
+
"description": "The base URL of the Confluence instance/server.",
|
|
10
|
+
"label": "Base URL",
|
|
11
11
|
"required": True
|
|
12
12
|
},
|
|
13
13
|
username={
|
|
14
14
|
"type": ARG_TYPE.STR,
|
|
15
|
-
"description": "Confluence
|
|
16
|
-
"label": "
|
|
15
|
+
"description": "The username for the Confluence account.",
|
|
16
|
+
"label": "Username",
|
|
17
17
|
"required": True
|
|
18
18
|
},
|
|
19
19
|
password={
|
|
20
20
|
"type": ARG_TYPE.STR,
|
|
21
|
-
"description": "
|
|
22
|
-
"label": "
|
|
21
|
+
"description": "The API token for the Confluence account.",
|
|
22
|
+
"label": "Password",
|
|
23
23
|
"required": True,
|
|
24
24
|
"secret": True
|
|
25
25
|
}
|
|
26
26
|
)
|
|
27
27
|
|
|
28
28
|
connection_args_example = OrderedDict(
|
|
29
|
-
|
|
29
|
+
api_base="https://marios.atlassian.net/",
|
|
30
30
|
username="your_username",
|
|
31
31
|
password="access_token"
|
|
32
32
|
)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
wikipedia==1.4.0
|
|
2
2
|
tiktoken
|
|
3
3
|
anthropic>=0.26.1
|
|
4
|
-
litellm==1.
|
|
4
|
+
litellm==1.63.14
|
|
5
5
|
chromadb~=0.6.3 # Knowledge bases.
|
|
6
6
|
-r mindsdb/integrations/handlers/openai_handler/requirements.txt
|
|
7
7
|
-r mindsdb/integrations/handlers/langchain_embedding_handler/requirements.txt
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
lightwood>=25.
|
|
2
|
-
lightwood[extra]>=25.
|
|
3
|
-
lightwood[xai]>=25.
|
|
1
|
+
lightwood>=25.3.3.3
|
|
2
|
+
lightwood[extra]>=25.3.3.3
|
|
3
|
+
lightwood[xai]>=25.3.3.3
|
|
4
4
|
type_infer==0.0.20
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
litellm==1.
|
|
1
|
+
litellm==1.63.14
|
|
2
2
|
|
|
@@ -94,6 +94,8 @@ class MySQLHandler(DatabaseHandler):
|
|
|
94
94
|
config["ssl_key"] = ssl_key
|
|
95
95
|
if 'collation' not in config:
|
|
96
96
|
config['collation'] = 'utf8mb4_general_ci'
|
|
97
|
+
if 'use_pure' not in config:
|
|
98
|
+
config['use_pure'] = True
|
|
97
99
|
try:
|
|
98
100
|
connection = mysql.connector.connect(**config)
|
|
99
101
|
connection.autocommit = True
|
|
@@ -81,27 +81,29 @@ class RayServeHandler(BaseMLEngine):
|
|
|
81
81
|
resp = requests.post(args['predict_url'],
|
|
82
82
|
json={'df': df.to_json(orient='records'), 'pred_args': pred_args},
|
|
83
83
|
headers={'content-type': 'application/json; format=pandas-records'})
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
content_type = resp.headers.get("Content-Type", "")
|
|
85
|
+
if "application/octet-stream" in content_type:
|
|
86
|
+
try:
|
|
86
87
|
buffer = io.BytesIO(resp.content)
|
|
87
88
|
table = pq.read_table(buffer)
|
|
88
89
|
response = table.to_pandas()
|
|
89
|
-
|
|
90
|
+
except Exception:
|
|
91
|
+
error = 'Could not decode parquet.'
|
|
92
|
+
else:
|
|
93
|
+
try:
|
|
90
94
|
response = resp.json()
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
+
except json.JSONDecodeError:
|
|
96
|
+
error = resp.text
|
|
97
|
+
|
|
98
|
+
if 'prediction' in response:
|
|
99
|
+
target = args['target']
|
|
100
|
+
if target != 'prediction':
|
|
101
|
+
# rename prediction to target
|
|
102
|
+
response[target] = response.pop('prediction')
|
|
103
|
+
return pd.DataFrame(response)
|
|
95
104
|
else:
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
if target != 'prediction':
|
|
99
|
-
# rename prediction to target
|
|
100
|
-
response[target] = response.pop('prediction')
|
|
101
|
-
return pd.DataFrame(response)
|
|
102
|
-
else:
|
|
103
|
-
# something wrong
|
|
104
|
-
error = response
|
|
105
|
+
# something wrong
|
|
106
|
+
error = response
|
|
105
107
|
|
|
106
108
|
raise RayServeException(f"Error: {error}")
|
|
107
109
|
|
|
@@ -7,6 +7,8 @@ from snowflake.connector.errors import NotSupportedError
|
|
|
7
7
|
|
|
8
8
|
from mindsdb.utilities import log
|
|
9
9
|
from mindsdb_sql_parser.ast.base import ASTNode
|
|
10
|
+
from mindsdb_sql_parser.ast import Select, Identifier
|
|
11
|
+
|
|
10
12
|
from mindsdb.integrations.libs.base import DatabaseHandler
|
|
11
13
|
from mindsdb.utilities.render.sqlalchemy_render import SqlalchemyRender
|
|
12
14
|
from mindsdb.integrations.libs.response import (
|
|
@@ -234,7 +236,30 @@ class SnowflakeHandler(DatabaseHandler):
|
|
|
234
236
|
|
|
235
237
|
query_str = self.renderer.get_string(query, with_failback=True)
|
|
236
238
|
logger.debug(f"Executing SQL query: {query_str}")
|
|
237
|
-
|
|
239
|
+
result = self.native_query(query_str)
|
|
240
|
+
return self.lowercase_columns(result, query)
|
|
241
|
+
|
|
242
|
+
def lowercase_columns(self, result, query):
|
|
243
|
+
if not isinstance(query, Select) or result.data_frame is None:
|
|
244
|
+
return result
|
|
245
|
+
|
|
246
|
+
quoted_columns = []
|
|
247
|
+
if query.targets is not None:
|
|
248
|
+
for column in query.targets:
|
|
249
|
+
if hasattr(column, 'alias') and column.alias is not None:
|
|
250
|
+
if column.alias.is_quoted[-1]:
|
|
251
|
+
quoted_columns.append(column.alias.parts[-1])
|
|
252
|
+
elif isinstance(column, Identifier):
|
|
253
|
+
if column.is_quoted[-1]:
|
|
254
|
+
quoted_columns.append(column.parts[-1])
|
|
255
|
+
|
|
256
|
+
rename_columns = {}
|
|
257
|
+
for col in result.data_frame.columns:
|
|
258
|
+
if col.isupper() and col not in quoted_columns:
|
|
259
|
+
rename_columns[col] = col.lower()
|
|
260
|
+
if rename_columns:
|
|
261
|
+
result.data_frame = result.data_frame.rename(columns=rename_columns)
|
|
262
|
+
return result
|
|
238
263
|
|
|
239
264
|
def get_tables(self) -> Response:
|
|
240
265
|
"""
|