88logging .basicConfig (level = logging .DEBUG )
99
1010from minds .datasources .examples import example_ds
11- from minds .datasources import DatabaseConfig
11+ from minds .datasources import DatabaseConfig , DatabaseTables
1212
1313from minds .exceptions import ObjectNotFound , MindNameInvalid , DatasourceNameInvalid
1414
@@ -64,8 +64,8 @@ def test_datasources():
6464def test_minds ():
6565 client = get_client ()
6666
67- ds_name = 'test_datasource_'
68- ds_name2 = 'test_datasource2_'
67+ ds_all_name = 'test_datasource_' # unlimited tables
68+ ds_rentals_name = 'test_datasource2_' # limited to home rentals
6969 mind_name = 'int_test_mind_'
7070 invalid_mind_name = 'mind-123'
7171 mind_name2 = 'int_test_mind2_'
@@ -80,38 +80,38 @@ def test_minds():
8080 ...
8181
8282 # prepare datasources
83- ds_cfg = copy .copy (example_ds )
84- ds_cfg .name = ds_name
85- ds = client .datasources .create (example_ds , update = True )
83+ ds_all_cfg = copy .copy (example_ds )
84+ ds_all_cfg .name = ds_all_name
85+ ds_all = client .datasources .create (ds_all_cfg , update = True )
8686
8787 # second datasource
88- ds2_cfg = copy .copy (example_ds )
89- ds2_cfg .name = ds_name2
90- ds2_cfg .tables = ['home_rentals' ]
88+ ds_rentals_cfg = copy .copy (example_ds )
89+ ds_rentals_cfg .name = ds_rentals_name
90+ ds_rentals_cfg .tables = ['home_rentals' ]
9191
9292 # create
9393 with pytest .raises (MindNameInvalid ):
9494 client .minds .create (
9595 invalid_mind_name ,
96- datasources = [ds ],
96+ datasources = [ds_all ],
9797 provider = 'openai'
9898 )
9999
100100 mind = client .minds .create (
101101 mind_name ,
102- datasources = [ds ],
102+ datasources = [ds_all ],
103103 provider = 'openai'
104104 )
105105 mind = client .minds .create (
106106 mind_name ,
107107 replace = True ,
108- datasources = [ds .name , ds2_cfg ],
108+ datasources = [ds_all .name , ds_rentals_cfg ],
109109 prompt_template = prompt1
110110 )
111111 mind = client .minds .create (
112112 mind_name ,
113113 update = True ,
114- datasources = [ds .name , ds2_cfg ],
114+ datasources = [ds_all .name , ds_rentals_cfg ],
115115 prompt_template = prompt1
116116 )
117117
@@ -131,14 +131,14 @@ def test_minds():
131131 # rename & update
132132 mind .update (
133133 name = mind_name2 ,
134- datasources = [ds .name ],
134+ datasources = [ds_all .name ],
135135 prompt_template = prompt2
136136 )
137137
138138 with pytest .raises (MindNameInvalid ):
139139 mind .update (
140140 name = invalid_mind_name ,
141- datasources = [ds .name ],
141+ datasources = [ds_all .name ],
142142 prompt_template = prompt2
143143 )
144144
@@ -151,28 +151,40 @@ def test_minds():
151151 assert mind .prompt_template == prompt2
152152
153153 # add datasource
154- mind .add_datasource (ds2_cfg )
154+ mind .add_datasource (ds_rentals_cfg )
155155 assert len (mind .datasources ) == 2
156156
157157 # del datasource
158- mind .del_datasource (ds2_cfg .name )
158+ mind .del_datasource (ds_rentals_cfg .name )
159159 assert len (mind .datasources ) == 1
160160
161161 # ask about data
162162 answer = mind .completion ('what is max rental price in home rental?' )
163163 assert '5602' in answer .replace (' ' , '' ).replace (',' , '' )
164164
165165 # limit tables
166- mind .del_datasource (ds .name )
167- mind .add_datasource (ds_name2 )
166+ mind .del_datasource (ds_all .name )
167+ mind .add_datasource (ds_rentals_name )
168168 assert len (mind .datasources ) == 1
169169
170- answer = mind .completion ('what is max rental price in home rental?' )
171- assert '5602' in answer .replace (' ' , '' ).replace (',' , '' )
170+ check_mind_can_see_only_rentals (mind )
172171
173- # not accessible table
174- answer = mind .completion ('what is max price in car sales?' )
175- assert '145000' not in answer .replace (' ' , '' ).replace (',' , '' )
172+ # test ds with limited tables
173+ ds_all_limited = DatabaseTables (
174+ name = ds_all_name ,
175+ tables = ['home_rentals' ]
176+ )
177+ # mind = client.minds.create(
178+ # 'mind_ds_limited_',
179+ # replace=True,
180+ # datasources=[ds_all],
181+ # prompt_template=prompt2
182+ # )
183+ mind .update (
184+ name = mind .name ,
185+ datasources = [ds_all_limited ],
186+ )
187+ check_mind_can_see_only_rentals (mind )
176188
177189 # stream completion
178190 success = False
@@ -183,6 +195,13 @@ def test_minds():
183195
184196 # drop
185197 client .minds .drop (mind_name2 )
186- client .datasources .drop (ds .name )
187- client .datasources .drop (ds2_cfg .name )
198+ client .datasources .drop (ds_all .name )
199+ client .datasources .drop (ds_rentals_cfg .name )
200+
201+ def check_mind_can_see_only_rentals (mind ):
202+ answer = mind .completion ('what is max rental price in home rental?' )
203+ assert '5602' in answer .replace (' ' , '' ).replace (',' , '' )
188204
205+ # not accessible table
206+ answer = mind .completion ('what is max price in car sales?' )
207+ assert '145000' not in answer .replace (' ' , '' ).replace (',' , '' )
0 commit comments