vanna 0.7.7__py3-none-any.whl → 0.7.9__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.
vanna/base/base.py CHANGED
@@ -181,30 +181,47 @@ class VannaBase(ABC):
181
181
  str: The extracted SQL query.
182
182
  """
183
183
 
184
- # If the llm_response contains a CTE (with clause), extract the last sql between WITH and ;
185
- sqls = re.findall(r"\bWITH\b .*?;", llm_response, re.DOTALL)
184
+ import re
185
+ """
186
+ Extracts the SQL query from the LLM response, handling various formats including:
187
+ - WITH clause
188
+ - SELECT statement
189
+ - CREATE TABLE AS SELECT
190
+ - Markdown code blocks
191
+ """
192
+
193
+ # Match CREATE TABLE ... AS SELECT
194
+ sqls = re.findall(r"\bCREATE\s+TABLE\b.*?\bAS\b.*?;", llm_response, re.DOTALL | re.IGNORECASE)
186
195
  if sqls:
187
196
  sql = sqls[-1]
188
197
  self.log(title="Extracted SQL", message=f"{sql}")
189
198
  return sql
190
199
 
191
- # If the llm_response is not markdown formatted, extract last sql by finding select and ; in the response
192
- sqls = re.findall(r"SELECT.*?;", llm_response, re.DOTALL)
200
+ # Match WITH clause (CTEs)
201
+ sqls = re.findall(r"\bWITH\b .*?;", llm_response, re.DOTALL | re.IGNORECASE)
193
202
  if sqls:
194
203
  sql = sqls[-1]
195
204
  self.log(title="Extracted SQL", message=f"{sql}")
196
205
  return sql
197
206
 
198
- # If the llm_response contains a markdown code block, with or without the sql tag, extract the last sql from it
199
- sqls = re.findall(r"```sql\n(.*)```", llm_response, re.DOTALL)
207
+ # Match SELECT ... ;
208
+ sqls = re.findall(r"\bSELECT\b .*?;", llm_response, re.DOTALL | re.IGNORECASE)
200
209
  if sqls:
201
210
  sql = sqls[-1]
202
211
  self.log(title="Extracted SQL", message=f"{sql}")
203
212
  return sql
204
213
 
205
- sqls = re.findall(r"```(.*)```", llm_response, re.DOTALL)
214
+ # Match ```sql ... ``` blocks
215
+ sqls = re.findall(r"```sql\s*\n(.*?)```", llm_response, re.DOTALL | re.IGNORECASE)
206
216
  if sqls:
207
- sql = sqls[-1]
217
+ sql = sqls[-1].strip()
218
+ self.log(title="Extracted SQL", message=f"{sql}")
219
+ return sql
220
+
221
+ # Match any ``` ... ``` code blocks
222
+ sqls = re.findall(r"```(.*?)```", llm_response, re.DOTALL | re.IGNORECASE)
223
+ if sqls:
224
+ sql = sqls[-1].strip()
208
225
  self.log(title="Extracted SQL", message=f"{sql}")
209
226
  return sql
210
227
 
@@ -111,7 +111,7 @@ class PineconeDB_VectorStore(VannaBase):
111
111
 
112
112
  def _check_if_embedding_exists(self, id: str, namespace: str) -> bool:
113
113
  fetch_response = self.Index.fetch(ids=[id], namespace=namespace)
114
- if fetch_response["vectors"] == {}:
114
+ if fetch_response.vectors == {}:
115
115
  return False
116
116
  return True
117
117
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vanna
3
- Version: 0.7.7
3
+ Version: 0.7.9
4
4
  Summary: Generate SQL queries from natural language
5
5
  Author-email: Zain Hoda <zain@vanna.ai>
6
6
  Requires-Python: >=3.9
@@ -28,7 +28,7 @@ Requires-Dist: duckdb ; extra == "all"
28
28
  Requires-Dist: openai ; extra == "all"
29
29
  Requires-Dist: qianfan ; extra == "all"
30
30
  Requires-Dist: mistralai>=1.0.0 ; extra == "all"
31
- Requires-Dist: chromadb ; extra == "all"
31
+ Requires-Dist: chromadb<1.0.0 ; extra == "all"
32
32
  Requires-Dist: anthropic ; extra == "all"
33
33
  Requires-Dist: zhipuai ; extra == "all"
34
34
  Requires-Dist: marqo ; extra == "all"
@@ -64,7 +64,7 @@ Requires-Dist: fastembed ; extra == "azuresearch"
64
64
  Requires-Dist: boto3 ; extra == "bedrock"
65
65
  Requires-Dist: botocore ; extra == "bedrock"
66
66
  Requires-Dist: google-cloud-bigquery ; extra == "bigquery"
67
- Requires-Dist: chromadb ; extra == "chromadb"
67
+ Requires-Dist: chromadb<1.0.0 ; extra == "chromadb"
68
68
  Requires-Dist: clickhouse_connect ; extra == "clickhouse"
69
69
  Requires-Dist: duckdb ; extra == "duckdb"
70
70
  Requires-Dist: faiss-cpu ; extra == "faiss-cpu"
@@ -85,7 +85,7 @@ Requires-Dist: opensearch-dsl ; extra == "opensearch"
85
85
  Requires-Dist: langchain-community ; extra == "opensearch"
86
86
  Requires-Dist: langchain-huggingface ; extra == "opensearch"
87
87
  Requires-Dist: oracledb ; extra == "oracle"
88
- Requires-Dist: chromadb ; extra == "oracle"
88
+ Requires-Dist: chromadb<1.0.0 ; extra == "oracle"
89
89
  Requires-Dist: langchain-postgres>=0.0.12 ; extra == "pgvector"
90
90
  Requires-Dist: pinecone ; extra == "pinecone"
91
91
  Requires-Dist: fastembed ; extra == "pinecone"
@@ -11,7 +11,7 @@ vanna/anthropic/anthropic_chat.py,sha256=7X3x8SYwDY28aGyBnt0YNRMG8YY1p_t-foMfKGj
11
11
  vanna/azuresearch/__init__.py,sha256=tZfvsrCJESiL3EnxA4PrOc5NoO8MXEzCfHX_hnj8n-c,58
12
12
  vanna/azuresearch/azuresearch_vector.py,sha256=_-t53PUnJM914GYbTYlyee06ocfu7l2NkZerBQtlJcs,9566
13
13
  vanna/base/__init__.py,sha256=Sl-HM1RRYzAZoSqmL1CZQmF3ZF-byYTCFQP3JZ2A5MU,28
14
- vanna/base/base.py,sha256=dGSOuidPBCUOuKxCJ9U_B9qSQ7w5Y4XIM0olox9RCYY,73816
14
+ vanna/base/base.py,sha256=HKb6j1jhJmJ8h5fe0t7h-KEVn_5lDg1mA3W2dqViuw8,74240
15
15
  vanna/bedrock/__init__.py,sha256=hRT2bgJbHEqViLdL-t9hfjSfFdIOkPU2ADBt-B1En-8,46
16
16
  vanna/bedrock/bedrock_converse.py,sha256=Nx5kYm-diAfYmsWAnTP5xnv7V84Og69-AP9b3seIe0E,2869
17
17
  vanna/chromadb/__init__.py,sha256=-iL0nW_g4uM8nWKMuWnNePfN4nb9uk8P3WzGvezOqRg,50
@@ -55,7 +55,7 @@ vanna/oracle/oracle_vector.py,sha256=uWcDFs5uhdKdjdEhFXy4RouTOiS-XMFmaUFuuOLtqho
55
55
  vanna/pgvector/__init__.py,sha256=7Wvu9qcNdNvZu26Dn53jhO9YXELm0_YsrwBab4BdgVM,37
56
56
  vanna/pgvector/pgvector.py,sha256=dJfm8rswYZvbaIbnjmyRjL071iw4siE0INibsZtaLXY,9919
57
57
  vanna/pinecone/__init__.py,sha256=eO5l8aX8vKL6aIUMgAXGPt1jdqKxB_Hic6cmoVAUrD0,90
58
- vanna/pinecone/pinecone_vector.py,sha256=mpq1lzo3KRj2QfJEw8pwFclFQK1Oi_Nx-lDkx9Gp0mw,11448
58
+ vanna/pinecone/pinecone_vector.py,sha256=DWJ6USFSGfcFQWC4X9viJddtahAUcDmYq8jrzetB1VE,11445
59
59
  vanna/qdrant/__init__.py,sha256=PX_OsDOiPMvwCJ2iGER1drSdQ9AyM8iN5PEBhRb6qqY,73
60
60
  vanna/qdrant/qdrant.py,sha256=Acl_jN-ZrtoQav_G3FuKypXiuYSo_hlP5lyOOwTxCWM,12527
61
61
  vanna/qianfan/Qianfan_Chat.py,sha256=Z-s9MwH22T4KMR8AViAjms6qoj67pHeQkMsbK-aXf1M,5273
@@ -73,7 +73,7 @@ vanna/weaviate/__init__.py,sha256=HL6PAl7ePBAkeG8uln-BmM7IUtWohyTPvDfcPzSGSCg,46
73
73
  vanna/weaviate/weaviate_vector.py,sha256=tUJIZjEy2mda8CB6C8zeN2SKkEO-UJdLsIqy69skuF0,7584
74
74
  vanna/xinference/__init__.py,sha256=EFW_sz-BSB2XgmjACOTZmneeIk3I2EiWgue-VVJpnB0,35
75
75
  vanna/xinference/xinference.py,sha256=2PI-f7XoBUyL_jfuXPqxCsd0W72h8j6CtEDneFw1AtI,1876
76
- vanna-0.7.7.dist-info/licenses/LICENSE,sha256=VYiPMMDqj9BcxUkAYqrAzJpn5tCFXCrnglfRqS5l9Rk,1065
77
- vanna-0.7.7.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
78
- vanna-0.7.7.dist-info/METADATA,sha256=45kbhCcgYmsi7bDQESvhAwPg96c92NW6qwlIDouIpiQ,15608
79
- vanna-0.7.7.dist-info/RECORD,,
76
+ vanna-0.7.9.dist-info/licenses/LICENSE,sha256=VYiPMMDqj9BcxUkAYqrAzJpn5tCFXCrnglfRqS5l9Rk,1065
77
+ vanna-0.7.9.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
78
+ vanna-0.7.9.dist-info/METADATA,sha256=m92ZX8HYX5y5cZTaAtOaw6PRCbf_6JuNnNso5B89MPo,15626
79
+ vanna-0.7.9.dist-info/RECORD,,
File without changes