vanna 0.6.3__tar.gz → 0.6.4__tar.gz
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-0.6.3 → vanna-0.6.4}/PKG-INFO +2 -1
- {vanna-0.6.3 → vanna-0.6.4}/pyproject.toml +2 -2
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/anthropic/anthropic_chat.py +9 -9
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/base/base.py +82 -53
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/flask/__init__.py +603 -133
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/openai/openai_chat.py +0 -9
- {vanna-0.6.3 → vanna-0.6.4}/README.md +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/ZhipuAI/ZhipuAI_Chat.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/ZhipuAI/ZhipuAI_embeddings.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/ZhipuAI/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/advanced/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/anthropic/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/base/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/bedrock/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/bedrock/bedrock_converse.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/chromadb/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/chromadb/chromadb_vector.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/exceptions/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/flask/assets.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/flask/auth.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/google/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/google/gemini_chat.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/hf/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/hf/hf.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/local.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/marqo/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/marqo/marqo.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/milvus/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/milvus/milvus_vector.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/mistral/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/mistral/mistral.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/mock/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/mock/embedding.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/mock/llm.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/mock/vectordb.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/ollama/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/ollama/ollama.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/openai/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/openai/openai_embeddings.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/opensearch/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/opensearch/opensearch_vector.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/pinecone/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/pinecone/pinecone_vector.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/qdrant/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/qdrant/qdrant.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/remote.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/types/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/utils.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/vannadb/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/vannadb/vannadb_vector.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/vllm/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/vllm/vllm.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/weaviate/__init__.py +0 -0
- {vanna-0.6.3 → vanna-0.6.4}/src/vanna/weaviate/weaviate_vector.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: vanna
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.4
|
|
4
4
|
Summary: Generate SQL queries from natural language
|
|
5
5
|
Author-email: Zain Hoda <zain@vanna.ai>
|
|
6
6
|
Requires-Python: >=3.9
|
|
@@ -16,6 +16,7 @@ Requires-Dist: sqlparse
|
|
|
16
16
|
Requires-Dist: kaleido
|
|
17
17
|
Requires-Dist: flask
|
|
18
18
|
Requires-Dist: flask-sock
|
|
19
|
+
Requires-Dist: flasgger
|
|
19
20
|
Requires-Dist: sqlalchemy
|
|
20
21
|
Requires-Dist: psycopg2-binary ; extra == "all"
|
|
21
22
|
Requires-Dist: db-dtypes ; extra == "all"
|
|
@@ -4,7 +4,7 @@ build-backend = "flit_core.buildapi"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "vanna"
|
|
7
|
-
version = "0.6.
|
|
7
|
+
version = "0.6.4"
|
|
8
8
|
authors = [
|
|
9
9
|
{ name="Zain Hoda", email="zain@vanna.ai" },
|
|
10
10
|
]
|
|
@@ -18,7 +18,7 @@ classifiers = [
|
|
|
18
18
|
"Operating System :: OS Independent",
|
|
19
19
|
]
|
|
20
20
|
dependencies = [
|
|
21
|
-
"requests", "tabulate", "plotly", "pandas", "sqlparse", "kaleido", "flask", "flask-sock", "sqlalchemy"
|
|
21
|
+
"requests", "tabulate", "plotly", "pandas", "sqlparse", "kaleido", "flask", "flask-sock", "flasgger", "sqlalchemy"
|
|
22
22
|
]
|
|
23
23
|
|
|
24
24
|
[project.urls]
|
|
@@ -8,15 +8,7 @@ from ..base import VannaBase
|
|
|
8
8
|
class Anthropic_Chat(VannaBase):
|
|
9
9
|
def __init__(self, client=None, config=None):
|
|
10
10
|
VannaBase.__init__(self, config=config)
|
|
11
|
-
|
|
12
|
-
if client is not None:
|
|
13
|
-
self.client = client
|
|
14
|
-
return
|
|
15
|
-
|
|
16
|
-
if config is None and client is None:
|
|
17
|
-
self.client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
|
|
18
|
-
return
|
|
19
|
-
|
|
11
|
+
|
|
20
12
|
# default parameters - can be overrided using config
|
|
21
13
|
self.temperature = 0.7
|
|
22
14
|
self.max_tokens = 500
|
|
@@ -27,6 +19,14 @@ class Anthropic_Chat(VannaBase):
|
|
|
27
19
|
if "max_tokens" in config:
|
|
28
20
|
self.max_tokens = config["max_tokens"]
|
|
29
21
|
|
|
22
|
+
if client is not None:
|
|
23
|
+
self.client = client
|
|
24
|
+
return
|
|
25
|
+
|
|
26
|
+
if config is None and client is None:
|
|
27
|
+
self.client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
|
|
28
|
+
return
|
|
29
|
+
|
|
30
30
|
if "api_key" in config:
|
|
31
31
|
self.client = anthropic.Anthropic(api_key=config["api_key"])
|
|
32
32
|
|
|
@@ -577,6 +577,7 @@ class VannaBase(ABC):
|
|
|
577
577
|
"3. If the provided context is insufficient, please explain why it can't be generated. \n"
|
|
578
578
|
"4. Please use the most relevant table(s). \n"
|
|
579
579
|
"5. If the question has been asked and answered before, please repeat the answer exactly as it was given before. \n"
|
|
580
|
+
f"6. Ensure that the output SQL is {self.dialect}-compliant and executable, and free of syntax errors. \n"
|
|
580
581
|
)
|
|
581
582
|
|
|
582
583
|
message_log = [self.system_message(initial_prompt)]
|
|
@@ -718,6 +719,7 @@ class VannaBase(ABC):
|
|
|
718
719
|
database: str,
|
|
719
720
|
role: Union[str, None] = None,
|
|
720
721
|
warehouse: Union[str, None] = None,
|
|
722
|
+
**kwargs
|
|
721
723
|
):
|
|
722
724
|
try:
|
|
723
725
|
snowflake = __import__("snowflake.connector")
|
|
@@ -735,7 +737,7 @@ class VannaBase(ABC):
|
|
|
735
737
|
else:
|
|
736
738
|
raise ImproperlyConfigured("Please set your Snowflake username.")
|
|
737
739
|
|
|
738
|
-
if password == "
|
|
740
|
+
if password == "mypassword":
|
|
739
741
|
password_env = os.getenv("SNOWFLAKE_PASSWORD")
|
|
740
742
|
|
|
741
743
|
if password_env is not None:
|
|
@@ -764,7 +766,8 @@ class VannaBase(ABC):
|
|
|
764
766
|
password=password,
|
|
765
767
|
account=account,
|
|
766
768
|
database=database,
|
|
767
|
-
client_session_keep_alive=True
|
|
769
|
+
client_session_keep_alive=True,
|
|
770
|
+
**kwargs
|
|
768
771
|
)
|
|
769
772
|
|
|
770
773
|
def run_sql_snowflake(sql: str) -> pd.DataFrame:
|
|
@@ -790,13 +793,13 @@ class VannaBase(ABC):
|
|
|
790
793
|
self.run_sql = run_sql_snowflake
|
|
791
794
|
self.run_sql_is_set = True
|
|
792
795
|
|
|
793
|
-
def connect_to_sqlite(self, url: str):
|
|
796
|
+
def connect_to_sqlite(self, url: str, check_same_thread: bool = False, **kwargs):
|
|
794
797
|
"""
|
|
795
798
|
Connect to a SQLite database. This is just a helper function to set [`vn.run_sql`][vanna.base.base.VannaBase.run_sql]
|
|
796
799
|
|
|
797
800
|
Args:
|
|
798
801
|
url (str): The URL of the database to connect to.
|
|
799
|
-
|
|
802
|
+
check_same_thread (str): Allow the connection may be accessed in multiple threads.
|
|
800
803
|
Returns:
|
|
801
804
|
None
|
|
802
805
|
"""
|
|
@@ -815,7 +818,11 @@ class VannaBase(ABC):
|
|
|
815
818
|
url = path
|
|
816
819
|
|
|
817
820
|
# Connect to the database
|
|
818
|
-
conn = sqlite3.connect(
|
|
821
|
+
conn = sqlite3.connect(
|
|
822
|
+
url,
|
|
823
|
+
check_same_thread=check_same_thread,
|
|
824
|
+
**kwargs
|
|
825
|
+
)
|
|
819
826
|
|
|
820
827
|
def run_sql_sqlite(sql: str):
|
|
821
828
|
return pd.read_sql_query(sql, conn)
|
|
@@ -831,6 +838,7 @@ class VannaBase(ABC):
|
|
|
831
838
|
user: str = None,
|
|
832
839
|
password: str = None,
|
|
833
840
|
port: int = None,
|
|
841
|
+
**kwargs
|
|
834
842
|
):
|
|
835
843
|
"""
|
|
836
844
|
Connect to postgres using the psycopg2 connector. This is just a helper function to set [`vn.run_sql`][vanna.base.base.VannaBase.run_sql]
|
|
@@ -900,6 +908,7 @@ class VannaBase(ABC):
|
|
|
900
908
|
user=user,
|
|
901
909
|
password=password,
|
|
902
910
|
port=port,
|
|
911
|
+
**kwargs
|
|
903
912
|
)
|
|
904
913
|
except psycopg2.Error as e:
|
|
905
914
|
raise ValidationError(e)
|
|
@@ -931,12 +940,13 @@ class VannaBase(ABC):
|
|
|
931
940
|
|
|
932
941
|
|
|
933
942
|
def connect_to_mysql(
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
943
|
+
self,
|
|
944
|
+
host: str = None,
|
|
945
|
+
dbname: str = None,
|
|
946
|
+
user: str = None,
|
|
947
|
+
password: str = None,
|
|
948
|
+
port: int = None,
|
|
949
|
+
**kwargs
|
|
940
950
|
):
|
|
941
951
|
|
|
942
952
|
try:
|
|
@@ -980,12 +990,15 @@ class VannaBase(ABC):
|
|
|
980
990
|
conn = None
|
|
981
991
|
|
|
982
992
|
try:
|
|
983
|
-
conn = pymysql.connect(
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
993
|
+
conn = pymysql.connect(
|
|
994
|
+
host=host,
|
|
995
|
+
user=user,
|
|
996
|
+
password=password,
|
|
997
|
+
database=dbname,
|
|
998
|
+
port=port,
|
|
999
|
+
cursorclass=pymysql.cursors.DictCursor,
|
|
1000
|
+
**kwargs
|
|
1001
|
+
)
|
|
989
1002
|
except pymysql.Error as e:
|
|
990
1003
|
raise ValidationError(e)
|
|
991
1004
|
|
|
@@ -1015,12 +1028,13 @@ class VannaBase(ABC):
|
|
|
1015
1028
|
self.run_sql = run_sql_mysql
|
|
1016
1029
|
|
|
1017
1030
|
def connect_to_clickhouse(
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1031
|
+
self,
|
|
1032
|
+
host: str = None,
|
|
1033
|
+
dbname: str = None,
|
|
1034
|
+
user: str = None,
|
|
1035
|
+
password: str = None,
|
|
1036
|
+
port: int = None,
|
|
1037
|
+
**kwargs
|
|
1024
1038
|
):
|
|
1025
1039
|
|
|
1026
1040
|
try:
|
|
@@ -1070,6 +1084,7 @@ class VannaBase(ABC):
|
|
|
1070
1084
|
username=user,
|
|
1071
1085
|
password=password,
|
|
1072
1086
|
database=dbname,
|
|
1087
|
+
**kwargs
|
|
1073
1088
|
)
|
|
1074
1089
|
print(conn)
|
|
1075
1090
|
except Exception as e:
|
|
@@ -1087,15 +1102,16 @@ class VannaBase(ABC):
|
|
|
1087
1102
|
|
|
1088
1103
|
except Exception as e:
|
|
1089
1104
|
raise e
|
|
1090
|
-
|
|
1105
|
+
|
|
1091
1106
|
self.run_sql_is_set = True
|
|
1092
1107
|
self.run_sql = run_sql_clickhouse
|
|
1093
1108
|
|
|
1094
1109
|
def connect_to_oracle(
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1110
|
+
self,
|
|
1111
|
+
user: str = None,
|
|
1112
|
+
password: str = None,
|
|
1113
|
+
dsn: str = None,
|
|
1114
|
+
**kwargs
|
|
1099
1115
|
):
|
|
1100
1116
|
|
|
1101
1117
|
"""
|
|
@@ -1148,7 +1164,8 @@ class VannaBase(ABC):
|
|
|
1148
1164
|
user=user,
|
|
1149
1165
|
password=password,
|
|
1150
1166
|
dsn=dsn,
|
|
1151
|
-
|
|
1167
|
+
**kwargs
|
|
1168
|
+
)
|
|
1152
1169
|
except oracledb.Error as e:
|
|
1153
1170
|
raise ValidationError(e)
|
|
1154
1171
|
|
|
@@ -1180,7 +1197,12 @@ class VannaBase(ABC):
|
|
|
1180
1197
|
self.run_sql_is_set = True
|
|
1181
1198
|
self.run_sql = run_sql_oracle
|
|
1182
1199
|
|
|
1183
|
-
def connect_to_bigquery(
|
|
1200
|
+
def connect_to_bigquery(
|
|
1201
|
+
self,
|
|
1202
|
+
cred_file_path: str = None,
|
|
1203
|
+
project_id: str = None,
|
|
1204
|
+
**kwargs
|
|
1205
|
+
):
|
|
1184
1206
|
"""
|
|
1185
1207
|
Connect to gcs using the bigquery connector. This is just a helper function to set [`vn.run_sql`][vanna.base.base.VannaBase.run_sql]
|
|
1186
1208
|
**Example:**
|
|
@@ -1242,7 +1264,11 @@ class VannaBase(ABC):
|
|
|
1242
1264
|
)
|
|
1243
1265
|
|
|
1244
1266
|
try:
|
|
1245
|
-
conn = bigquery.Client(
|
|
1267
|
+
conn = bigquery.Client(
|
|
1268
|
+
project=project_id,
|
|
1269
|
+
credentials=credentials,
|
|
1270
|
+
**kwargs
|
|
1271
|
+
)
|
|
1246
1272
|
except:
|
|
1247
1273
|
raise ImproperlyConfigured(
|
|
1248
1274
|
"Could not connect to bigquery please correct credentials"
|
|
@@ -1265,7 +1291,7 @@ class VannaBase(ABC):
|
|
|
1265
1291
|
self.run_sql_is_set = True
|
|
1266
1292
|
self.run_sql = run_sql_bigquery
|
|
1267
1293
|
|
|
1268
|
-
def connect_to_duckdb(self, url: str, init_sql: str = None):
|
|
1294
|
+
def connect_to_duckdb(self, url: str, init_sql: str = None, **kwargs):
|
|
1269
1295
|
"""
|
|
1270
1296
|
Connect to a DuckDB database. This is just a helper function to set [`vn.run_sql`][vanna.base.base.VannaBase.run_sql]
|
|
1271
1297
|
|
|
@@ -1303,7 +1329,7 @@ class VannaBase(ABC):
|
|
|
1303
1329
|
f.write(response.content)
|
|
1304
1330
|
|
|
1305
1331
|
# Connect to the database
|
|
1306
|
-
conn = duckdb.connect(path)
|
|
1332
|
+
conn = duckdb.connect(path, **kwargs)
|
|
1307
1333
|
if init_sql:
|
|
1308
1334
|
conn.query(init_sql)
|
|
1309
1335
|
|
|
@@ -1314,7 +1340,7 @@ class VannaBase(ABC):
|
|
|
1314
1340
|
self.run_sql = run_sql_duckdb
|
|
1315
1341
|
self.run_sql_is_set = True
|
|
1316
1342
|
|
|
1317
|
-
def connect_to_mssql(self, odbc_conn_str: str):
|
|
1343
|
+
def connect_to_mssql(self, odbc_conn_str: str, **kwargs):
|
|
1318
1344
|
"""
|
|
1319
1345
|
Connect to a Microsoft SQL Server database. This is just a helper function to set [`vn.run_sql`][vanna.base.base.VannaBase.run_sql]
|
|
1320
1346
|
|
|
@@ -1347,7 +1373,7 @@ class VannaBase(ABC):
|
|
|
1347
1373
|
|
|
1348
1374
|
from sqlalchemy import create_engine
|
|
1349
1375
|
|
|
1350
|
-
engine = create_engine(connection_url)
|
|
1376
|
+
engine = create_engine(connection_url, **kwargs)
|
|
1351
1377
|
|
|
1352
1378
|
def run_sql_mssql(sql: str):
|
|
1353
1379
|
# Execute the SQL statement and return the result as a pandas DataFrame
|
|
@@ -1362,16 +1388,17 @@ class VannaBase(ABC):
|
|
|
1362
1388
|
self.run_sql = run_sql_mssql
|
|
1363
1389
|
self.run_sql_is_set = True
|
|
1364
1390
|
def connect_to_presto(
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1391
|
+
self,
|
|
1392
|
+
host: str,
|
|
1393
|
+
catalog: str = 'hive',
|
|
1394
|
+
schema: str = 'default',
|
|
1395
|
+
user: str = None,
|
|
1396
|
+
password: str = None,
|
|
1397
|
+
port: int = None,
|
|
1398
|
+
combined_pem_path: str = None,
|
|
1399
|
+
protocol: str = 'https',
|
|
1400
|
+
requests_kwargs: dict = None,
|
|
1401
|
+
**kwargs
|
|
1375
1402
|
):
|
|
1376
1403
|
"""
|
|
1377
1404
|
Connect to a Presto database using the specified parameters.
|
|
@@ -1444,7 +1471,8 @@ class VannaBase(ABC):
|
|
|
1444
1471
|
schema=schema,
|
|
1445
1472
|
port=port,
|
|
1446
1473
|
protocol=protocol,
|
|
1447
|
-
requests_kwargs=requests_kwargs
|
|
1474
|
+
requests_kwargs=requests_kwargs,
|
|
1475
|
+
**kwargs)
|
|
1448
1476
|
except presto.Error as e:
|
|
1449
1477
|
raise ValidationError(e)
|
|
1450
1478
|
|
|
@@ -1477,13 +1505,14 @@ class VannaBase(ABC):
|
|
|
1477
1505
|
self.run_sql = run_sql_presto
|
|
1478
1506
|
|
|
1479
1507
|
def connect_to_hive(
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1508
|
+
self,
|
|
1509
|
+
host: str = None,
|
|
1510
|
+
dbname: str = 'default',
|
|
1511
|
+
user: str = None,
|
|
1512
|
+
password: str = None,
|
|
1513
|
+
port: int = None,
|
|
1514
|
+
auth: str = 'CUSTOM',
|
|
1515
|
+
**kwargs
|
|
1487
1516
|
):
|
|
1488
1517
|
"""
|
|
1489
1518
|
Connect to a Hive database. This is just a helper function to set [`vn.run_sql`][vanna.base.base.VannaBase.run_sql]
|