Skip to content

Commit 7898fdb

Browse files
committed
Merge branch 'staging' into server-info
# Conflicts: # tests/test_sdk.py
2 parents 5deb5a3 + 2824a9a commit 7898fdb

File tree

6 files changed

+81
-46
lines changed

6 files changed

+81
-46
lines changed

.github/workflows/mindsdb_python_sdk.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ jobs:
4242
needs: test
4343
if: github.ref != 'refs/heads/stable'
4444
runs-on: ubuntu-latest
45+
permissions:
46+
pull-requests: write
4547
steps:
4648
- uses: actions/checkout@v3
4749
- name: Set up Python 3.8

mindsdb_sdk/__about__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
__title__ = 'mindsdb_sdk'
22
__package_name__ = 'mindsdb_sdk'
3-
__version__ = '2.0.0'
3+
__version__ = '2.1.0'
44
__description__ = "MindsDB Python SDK, provides an SDK to use a remote mindsdb instance"
55
__email__ = "jorge@mindsdb.com"
66
__author__ = 'MindsDB Inc'

mindsdb_sdk/server.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,6 @@ class Server(Project):
2323
2424
"""
2525

26-
def a(self):
27-
...
28-
2926
def __init__(self, api):
3027
# server is also mindsdb project
3128
super().__init__(api, 'mindsdb')

mindsdb_sdk/utils/objects_collection.py

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -19,39 +19,39 @@ def __getattr__(self, name):
1919
return self.get(name)
2020

2121

22-
class MethodCollection(CollectionBase):
23-
24-
def __init__(self, name, methods):
25-
self.name = name
26-
self.methods = methods
27-
28-
def __repr__(self):
29-
return f'{self.__class__.__name__}({self.name})'
30-
31-
def get(self, *args, **kwargs):
32-
method = self.methods.get('get')
33-
if method is None:
34-
raise NotImplementedError()
35-
36-
return method(*args, **kwargs)
37-
38-
def list(self, *args, **kwargs):
39-
method = self.methods.get('list')
40-
if method is None:
41-
raise NotImplementedError()
42-
43-
return method(*args, **kwargs)
44-
45-
def create(self, *args, **kwargs):
46-
method = self.methods.get('create')
47-
if method is None:
48-
raise NotImplementedError()
49-
50-
return method(*args, **kwargs)
51-
52-
def drop(self, name):
53-
method = self.methods.get('drop')
54-
if method is None:
55-
raise NotImplementedError()
56-
57-
return method(name)
22+
# class MethodCollection(CollectionBase):
23+
#
24+
# def __init__(self, name, methods):
25+
# self.name = name
26+
# self.methods = methods
27+
#
28+
# def __repr__(self):
29+
# return f'{self.__class__.__name__}({self.name})'
30+
#
31+
# def get(self, *args, **kwargs):
32+
# method = self.methods.get('get')
33+
# if method is None:
34+
# raise NotImplementedError()
35+
#
36+
# return method(*args, **kwargs)
37+
#
38+
# def list(self, *args, **kwargs):
39+
# method = self.methods.get('list')
40+
# if method is None:
41+
# raise NotImplementedError()
42+
#
43+
# return method(*args, **kwargs)
44+
#
45+
# def create(self, *args, **kwargs):
46+
# method = self.methods.get('create')
47+
# if method is None:
48+
# raise NotImplementedError()
49+
#
50+
# return method(*args, **kwargs)
51+
#
52+
# def drop(self, name):
53+
# method = self.methods.get('drop')
54+
# if method is None:
55+
# raise NotImplementedError()
56+
#
57+
# return method(name)

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
requests
22
pandas >= 1.3.5
3-
mindsdb-sql >= 0.7.0, < 0.8.0
3+
mindsdb-sql >= 0.7.0, < 0.11.0

tests/test_sdk.py

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -126,16 +126,16 @@ def check_model(self, model, database, mock_post):
126126
f'Finetune {model.project.name}.{model_name} FROM d1 (select a from t1)'
127127
)
128128

129-
model.retrain(query, options={ 'x': 2 })
129+
model.retrain(query, options={'x': 2})
130130
check_sql_call(
131131
mock_post,
132132
f'RETRAIN {model.project.name}.{model_name} FROM {query.database} ({query.sql}) USING x=2'
133133
)
134134

135-
model.retrain('select a from t1', database='d1')
135+
model.retrain('select a from t1', database='d1', engine='openai')
136136
check_sql_call(
137137
mock_post,
138-
f'RETRAIN {model.project.name}.{model_name} FROM d1 (select a from t1)'
138+
f'RETRAIN {model.project.name}.{model_name} FROM d1 (select a from t1) USING engine=\'openai\''
139139
)
140140

141141
# describe
@@ -183,9 +183,15 @@ class Test(BaseFlow):
183183
@patch('requests.Session.post')
184184
def test_flow(self, mock_post, mock_put, mock_get):
185185

186+
# check local
187+
server = mindsdb_sdk.connect()
188+
str(server)
189+
190+
assert server.api.url == 'http://127.0.0.1:47334'
191+
192+
# check cloud login
186193
server = mindsdb_sdk.connect(login='a@b.com')
187194

188-
# check login
189195
call_args = mock_post.call_args
190196
assert call_args[0][0] == 'https://cloud.mindsdb.com/cloud/login'
191197
assert call_args[1]['json']['email'] == 'a@b.com'
@@ -203,6 +209,7 @@ def test_flow(self, mock_post, mock_put, mock_get):
203209
check_sql_call(mock_post, "select NAME from information_schema.databases where TYPE='data'")
204210

205211
database = databases[0]
212+
str(database)
206213
assert database.name == 'db1'
207214
self.check_database(database)
208215

@@ -370,6 +377,7 @@ def check_project_models(self, project, database, mock_post):
370377
f'CREATE PREDICTOR m2 FROM example_db (select * from t1) PREDICT price ORDER BY date GROUP BY a, b WINDOW 10 HORIZON 2 USING module="LightGBM", `engine`="lightwood"'
371378
)
372379
assert model.name == 'm2'
380+
model.wait_complete()
373381
self.check_model(model, database)
374382

375383
# create, using deferred query.
@@ -379,6 +387,7 @@ def check_project_models(self, project, database, mock_post):
379387
predict='price',
380388
query=query,
381389
)
390+
str(query)
382391

383392
check_sql_call(
384393
mock_post,
@@ -605,6 +614,7 @@ def test_flow(self, mock_post, mock_put):
605614
self.check_project(project, database)
606615

607616
project = con.projects.create('proj1')
617+
str(project)
608618
check_sql_call(
609619
mock_post, 'CREATE DATABASE proj1 WITH ENGINE = "mindsdb", PARAMETERS = {}')
610620
self.check_project(project, database)
@@ -761,6 +771,7 @@ def check_project_models(self, project, database, mock_post):
761771

762772
models = project.models.list()
763773
model = models[0] # Model object
774+
str(model)
764775

765776
assert model.name == 'm1'
766777
assert model.get_status() == 'complete'
@@ -790,7 +801,7 @@ def check_project_models(self, project, database, mock_post):
790801
'window': 10,
791802
'horizon': 2
792803
},
793-
module = 'LightGBM', # has to be in options
804+
module='LightGBM', # has to be in options
794805
)
795806
check_sql_call(
796807
mock_post,
@@ -910,6 +921,11 @@ def check_database(self, database, mock_post):
910921
table2 = database.tables.create('t2', query)
911922
check_sql_call(mock_post, f'create table {database.name}.t2 (select * from tbl1)')
912923

924+
# create with replace
925+
database.tables.create('t2', query, replace=True)
926+
check_sql_call(mock_post, f'create or replace table {database.name}.t2 (select * from tbl1)')
927+
928+
913929
assert table2.name == 't2'
914930
self.check_table(table2)
915931

@@ -968,7 +984,9 @@ def check_project_jobs(self, project, mock_post):
968984
assert job.name == 'job1'
969985
assert job.query_str == 'select 1'
970986

987+
dir(project.jobs)
971988
job = project.jobs.job1
989+
str(job)
972990
assert job.name == 'job1'
973991
assert job.query_str == 'select 1'
974992

@@ -978,6 +996,13 @@ def check_project_jobs(self, project, mock_post):
978996
f"select * from jobs where name = 'job1'"
979997
)
980998

999+
job.get_history()
1000+
1001+
check_sql_call(
1002+
mock_post,
1003+
f"select * from jobs_history where name = 'job1'"
1004+
)
1005+
9811006
project.jobs.create(
9821007
name='job2',
9831008
query_str='retrain m1',
@@ -992,6 +1017,17 @@ def check_project_jobs(self, project, mock_post):
9921017
call_stack_num=-2
9931018
)
9941019

1020+
project.jobs.create(
1021+
name='job2',
1022+
query_str='retrain m1'
1023+
)
1024+
1025+
check_sql_call(
1026+
mock_post,
1027+
f"CREATE JOB job2 (retrain m1)",
1028+
call_stack_num=-2
1029+
)
1030+
9951031
project.jobs.drop('job2')
9961032

9971033
check_sql_call(

0 commit comments

Comments
 (0)