qe-api-client 1.0.0__tar.gz → 1.2.0__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.
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/PKG-INFO +1 -1
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/qe_api_client/engine.py +17 -10
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/qe_api_client/engine_field_api.py +1 -1
- qe_api_client-1.2.0/qe_api_client/engine_generic_dimension_api.py +16 -0
- qe_api_client-1.2.0/qe_api_client/engine_generic_measure_api.py +15 -0
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/qe_api_client/engine_generic_object_api.py +1 -1
- qe_api_client-1.2.0/qe_api_client/engine_generic_variable_api.py +24 -0
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/qe_api_client/engine_global_api.py +5 -11
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/qe_api_client.egg-info/PKG-INFO +1 -1
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/qe_api_client.egg-info/SOURCES.txt +3 -0
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/setup.py +1 -1
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/test/test_app_api.py +1 -1
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/test/test_field_api.py +3 -3
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/test/test_global_api.py +3 -3
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/test/test_pyqlikengine.py +1 -1
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/LICENSE +0 -0
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/README.md +0 -0
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/qe_api_client/__init__.py +0 -0
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/qe_api_client/engine_app_api.py +0 -0
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/qe_api_client/engine_communicator.py +0 -0
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/qe_api_client/engine_helper.py +0 -0
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/qe_api_client/structs.py +0 -0
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/qe_api_client.egg-info/dependency_links.txt +0 -0
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/qe_api_client.egg-info/requires.txt +0 -0
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/qe_api_client.egg-info/top_level.txt +0 -0
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/setup.cfg +0 -0
- {qe_api_client-1.0.0 → qe_api_client-1.2.0}/test/test_labs.py +0 -0
@@ -3,24 +3,31 @@ import qe_api_client.engine_communicator as engine_communicator
|
|
3
3
|
import qe_api_client.engine_field_api as engine_field_api
|
4
4
|
import qe_api_client.engine_generic_object_api as engine_generic_object_api
|
5
5
|
import qe_api_client.engine_global_api as engine_global_api
|
6
|
+
import qe_api_client.engine_generic_variable_api as engine_generic_variable_api
|
7
|
+
import qe_api_client.engine_generic_dimension_api as engine_generic_dimension_api
|
8
|
+
import qe_api_client.engine_generic_measure_api as engine_generic_measure_api
|
6
9
|
import qe_api_client.structs as structs
|
7
10
|
|
8
11
|
|
9
12
|
class QixEngine:
|
10
13
|
|
11
|
-
def __init__(self, url, user_directory,
|
12
|
-
user_id, ca_certs, certfile,
|
13
|
-
keyfile, app_id=None):
|
14
|
+
def __init__(self, url, user_directory=None, user_id=None, ca_certs=None, certfile=None, keyfile=None, app_id=None):
|
14
15
|
self.url = url
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
|
17
|
+
# Check, if server or local connection available
|
18
|
+
if user_directory is None and user_id is None and ca_certs is None and certfile is None and keyfile is None:
|
19
|
+
self.conn = engine_communicator.EngineCommunicator(url)
|
20
|
+
else:
|
21
|
+
self.conn = engine_communicator.SecureEngineCommunicator(url, user_directory, user_id, ca_certs, certfile,
|
22
|
+
keyfile, app_id)
|
23
|
+
|
20
24
|
self.ega = engine_global_api.EngineGlobalApi(self.conn)
|
21
25
|
self.eaa = engine_app_api.EngineAppApi(self.conn)
|
22
26
|
self.egoa = engine_generic_object_api.EngineGenericObjectApi(self.conn)
|
23
27
|
self.efa = engine_field_api.EngineFieldApi(self.conn)
|
28
|
+
self.egva = engine_generic_variable_api.EngineGenericVariableApi(self.conn)
|
29
|
+
self.egda = engine_generic_dimension_api.EngineGenericDimensionApi(self.conn)
|
30
|
+
self.egma = engine_generic_measure_api.EngineGenericMeasureApi(self.conn)
|
24
31
|
self.Structs = structs.Structs()
|
25
32
|
self.app_handle = ''
|
26
33
|
|
@@ -36,7 +43,7 @@ class QixEngine:
|
|
36
43
|
return self.eaa.do_reload_ex(self.app_handle)['qResult']['qSuccess']
|
37
44
|
|
38
45
|
def open_app(self, app_obj):
|
39
|
-
opened_app = self.ega.open_doc(app_obj)
|
46
|
+
opened_app = self.ega.open_doc(app_obj)
|
40
47
|
self.app_handle = self.ega.get_handle(opened_app)
|
41
48
|
return opened_app['qGenericId']
|
42
49
|
|
@@ -124,7 +131,7 @@ class QixEngine:
|
|
124
131
|
lb_param = {"qInfo": {"qId": "SLB01", "qType": "ListObject"},
|
125
132
|
"qListObjectDef": lb_def}
|
126
133
|
listobj_handle = self.eaa.create_session_object(self.app_handle, lb_param)["qReturn"]["qHandle"] # NOQA
|
127
|
-
val_list = self.egoa.get_layout(listobj_handle)["
|
134
|
+
val_list = self.egoa.get_layout(listobj_handle)["qListObject"]["qDataPages"][0]["qMatrix"] # NOQA
|
128
135
|
val_n_state_list = []
|
129
136
|
for val in val_list:
|
130
137
|
val_n_state_list.append((val[0]["qText"], val[0]["qState"]))
|
@@ -58,7 +58,7 @@ class EngineFieldApi:
|
|
58
58
|
|
59
59
|
def clear(self, fld_handle):
|
60
60
|
msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": fld_handle,
|
61
|
-
"method": "
|
61
|
+
"method": "Clear",
|
62
62
|
"params": []})
|
63
63
|
response = json.loads(self.engine_socket.send_call(self.engine_socket,
|
64
64
|
msg)
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import json
|
2
|
+
|
3
|
+
|
4
|
+
class EngineGenericDimensionApi:
|
5
|
+
|
6
|
+
def __init__(self, socket):
|
7
|
+
self.engine_socket = socket
|
8
|
+
|
9
|
+
def get_dimension(self, handle, dimension_id):
|
10
|
+
msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": handle, "method": "GetDimension",
|
11
|
+
"params": {"qId": dimension_id}})
|
12
|
+
response = json.loads(self.engine_socket.send_call(self.engine_socket, msg))
|
13
|
+
try:
|
14
|
+
return response["result"]["qReturn"]
|
15
|
+
except KeyError:
|
16
|
+
return response["error"]
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import json
|
2
|
+
|
3
|
+
|
4
|
+
class EngineGenericMeasureApi:
|
5
|
+
|
6
|
+
def __init__(self, socket):
|
7
|
+
self.engine_socket = socket
|
8
|
+
|
9
|
+
def get_measure(self, handle, measure_id):
|
10
|
+
msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": handle, "method": "GetMeasure", "params": {"qId": measure_id}})
|
11
|
+
response = json.loads(self.engine_socket.send_call(self.engine_socket, msg))
|
12
|
+
try:
|
13
|
+
return response["result"]["qReturn"]
|
14
|
+
except KeyError:
|
15
|
+
return response["error"]
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import json
|
2
|
+
|
3
|
+
|
4
|
+
class EngineGenericVariableApi:
|
5
|
+
|
6
|
+
def __init__(self, socket):
|
7
|
+
self.engine_socket = socket
|
8
|
+
|
9
|
+
def set_string_value(self, handle, str_val):
|
10
|
+
msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": handle, "method": "SetStringValue",
|
11
|
+
"params": {"qVal": str_val}})
|
12
|
+
response = json.loads(self.engine_socket.send_call(self.engine_socket, msg))
|
13
|
+
try:
|
14
|
+
return response["result"]
|
15
|
+
except KeyError:
|
16
|
+
return response["error"]
|
17
|
+
|
18
|
+
def get_properties(self, handle):
|
19
|
+
msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": handle, "method": "GetProperties", "params": {}})
|
20
|
+
response = json.loads(self.engine_socket.send_call(self.engine_socket, msg))
|
21
|
+
try:
|
22
|
+
return response["result"]
|
23
|
+
except KeyError:
|
24
|
+
return response["error"]
|
@@ -60,18 +60,12 @@ class EngineGlobalApi:
|
|
60
60
|
return response["error"]
|
61
61
|
|
62
62
|
# opens an app and returns an object with handle, generic id and type
|
63
|
-
def open_doc(self, app_name, user_name='',
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
{"jsonrpc": "2.0", "id": 0, "handle": -1,
|
68
|
-
"method": "OpenDoc", "params": [app_name, user_name,
|
69
|
-
password, serial,
|
70
|
-
no_data]})
|
71
|
-
response = json.loads(
|
72
|
-
self.engine_socket.send_call(self.engine_socket, msg))
|
63
|
+
def open_doc(self, app_name, user_name='', password='', serial='', no_data=False):
|
64
|
+
msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": -1, "method": "OpenDoc",
|
65
|
+
"params": [app_name, user_name, password, serial, no_data]})
|
66
|
+
response = json.loads(self.engine_socket.send_call(self.engine_socket, msg))
|
73
67
|
try:
|
74
|
-
return response[
|
68
|
+
return response["result"]["qReturn"]
|
75
69
|
except KeyError:
|
76
70
|
return response["error"]
|
77
71
|
|
@@ -6,7 +6,10 @@ qe_api_client/engine.py
|
|
6
6
|
qe_api_client/engine_app_api.py
|
7
7
|
qe_api_client/engine_communicator.py
|
8
8
|
qe_api_client/engine_field_api.py
|
9
|
+
qe_api_client/engine_generic_dimension_api.py
|
10
|
+
qe_api_client/engine_generic_measure_api.py
|
9
11
|
qe_api_client/engine_generic_object_api.py
|
12
|
+
qe_api_client/engine_generic_variable_api.py
|
10
13
|
qe_api_client/engine_global_api.py
|
11
14
|
qe_api_client/engine_helper.py
|
12
15
|
qe_api_client/structs.py
|
@@ -22,7 +22,7 @@ class TestAppApi(unittest.TestCase):
|
|
22
22
|
self.struct = Structs()
|
23
23
|
self.app = self.ega.create_app("TestApp")['qAppId']
|
24
24
|
opened_app = self.ega.open_doc(self.app)
|
25
|
-
self.app_handle = self.ega.get_handle(opened_app
|
25
|
+
self.app_handle = self.ega.get_handle(opened_app)
|
26
26
|
|
27
27
|
def test_add_alternate_state(self):
|
28
28
|
response = self.eaa.add_alternate_state(self.app_handle, "MyState")
|
@@ -21,7 +21,7 @@ class TestFieldApi(unittest.TestCase):
|
|
21
21
|
self.struct = Structs()
|
22
22
|
self.app = self.ega.create_app("TestApp")["qAppId"]
|
23
23
|
opened_app = self.ega.open_doc(self.app)
|
24
|
-
self.app_handle = self.ega.get_handle(opened_app
|
24
|
+
self.app_handle = self.ega.get_handle(opened_app)
|
25
25
|
with open('../test/test_data/ctrl00_script.qvs') as f:
|
26
26
|
script = f.read()
|
27
27
|
self.eaa.set_script(self.app_handle, script)
|
@@ -46,7 +46,7 @@ class TestFieldApi(unittest.TestCase):
|
|
46
46
|
sel_res = self.efa.select_values(self.fld_handle, values_to_select)
|
47
47
|
self.assertTrue(sel_res["qReturn"] is True,
|
48
48
|
"Failed to perform selection")
|
49
|
-
val_mtrx = self.egoa.get_layout(self.lb_handle)["
|
49
|
+
val_mtrx = self.egoa.get_layout(self.lb_handle)["qListObject"]["qDataPages"][0]["qMatrix"] # NOQA
|
50
50
|
self.assertEqual(val_mtrx[0][0]["qState"],
|
51
51
|
"S",
|
52
52
|
"Failed to select first value")
|
@@ -54,7 +54,7 @@ class TestFieldApi(unittest.TestCase):
|
|
54
54
|
"X",
|
55
55
|
"Failed to exclude fifth value")
|
56
56
|
self.eaa.clear_all(self.app_handle)
|
57
|
-
val_mtrx = self.egoa.get_layout(self.lb_handle)["
|
57
|
+
val_mtrx = self.egoa.get_layout(self.lb_handle)["qListObject"]["qDataPages"][0]["qMatrix"] # NOQA
|
58
58
|
self.assertEqual(val_mtrx[0][0]["qState"],
|
59
59
|
"O",
|
60
60
|
"Failed to clear selection")
|
@@ -37,14 +37,14 @@ class TestGlobalApi(unittest.TestCase):
|
|
37
37
|
# print response_copy
|
38
38
|
response_open = self.ega.open_doc("test_app")
|
39
39
|
# response_open = self.ega.open_doc_ex("test_app_asdf")
|
40
|
-
self.assertEqual(response_open[
|
40
|
+
self.assertEqual(response_open["qHandle"], 1,
|
41
41
|
"Failed to retrieve a proper document "
|
42
42
|
"handle with open_doc method")
|
43
|
-
self.assertTrue(response_open[
|
43
|
+
self.assertTrue(response_open["qGenericId"].
|
44
44
|
endswith(".qvf"),
|
45
45
|
'Generic id does not contain any app '
|
46
46
|
'file extension using open_doc method')
|
47
|
-
self.assertEqual(response_open[
|
47
|
+
self.assertEqual(response_open["qType"], "Doc",
|
48
48
|
'Unknown doc type returned using open_doc method')
|
49
49
|
response_get_active_doc = self.ega.get_active_doc()
|
50
50
|
self.assertEqual(response_get_active_doc['qReturn']["qHandle"], 1,
|
@@ -12,7 +12,7 @@ class TestQixEngine(unittest.TestCase):
|
|
12
12
|
self.assertTrue(app_exists == "App already exists",
|
13
13
|
'Failed to handle existing app exception')
|
14
14
|
self.opened_app = self.qixe.open_app(app)
|
15
|
-
with open('
|
15
|
+
with open('./test_data/ctrl00_script.qvs') as f:
|
16
16
|
script = f.read()
|
17
17
|
self.assertTrue(self.qixe.load_script(script), 'Failed to load script')
|
18
18
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|