qe-api-client 1.1.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.
Files changed (27) hide show
  1. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/PKG-INFO +1 -1
  2. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/qe_api_client/engine.py +6 -2
  3. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/qe_api_client/engine_field_api.py +1 -1
  4. qe_api_client-1.2.0/qe_api_client/engine_generic_dimension_api.py +16 -0
  5. qe_api_client-1.2.0/qe_api_client/engine_generic_measure_api.py +15 -0
  6. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/qe_api_client/engine_generic_object_api.py +1 -1
  7. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/qe_api_client/engine_global_api.py +5 -11
  8. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/qe_api_client.egg-info/PKG-INFO +1 -1
  9. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/qe_api_client.egg-info/SOURCES.txt +2 -0
  10. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/setup.py +1 -1
  11. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/test/test_app_api.py +1 -1
  12. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/test/test_field_api.py +3 -3
  13. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/test/test_global_api.py +3 -3
  14. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/LICENSE +0 -0
  15. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/README.md +0 -0
  16. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/qe_api_client/__init__.py +0 -0
  17. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/qe_api_client/engine_app_api.py +0 -0
  18. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/qe_api_client/engine_communicator.py +0 -0
  19. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/qe_api_client/engine_generic_variable_api.py +0 -0
  20. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/qe_api_client/engine_helper.py +0 -0
  21. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/qe_api_client/structs.py +0 -0
  22. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/qe_api_client.egg-info/dependency_links.txt +0 -0
  23. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/qe_api_client.egg-info/requires.txt +0 -0
  24. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/qe_api_client.egg-info/top_level.txt +0 -0
  25. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/setup.cfg +0 -0
  26. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/test/test_labs.py +0 -0
  27. {qe_api_client-1.1.0 → qe_api_client-1.2.0}/test/test_pyqlikengine.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: qe-api-client
3
- Version: 1.1.0
3
+ Version: 1.2.0
4
4
  Summary: Python wrapper around Qlik Engine JSON API
5
5
  Home-page: https://github.com/lr-bicc/qe-api-client
6
6
  Author: Rumen Vasilev
@@ -4,6 +4,8 @@ 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
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
7
9
  import qe_api_client.structs as structs
8
10
 
9
11
 
@@ -24,6 +26,8 @@ class QixEngine:
24
26
  self.egoa = engine_generic_object_api.EngineGenericObjectApi(self.conn)
25
27
  self.efa = engine_field_api.EngineFieldApi(self.conn)
26
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)
27
31
  self.Structs = structs.Structs()
28
32
  self.app_handle = ''
29
33
 
@@ -39,7 +43,7 @@ class QixEngine:
39
43
  return self.eaa.do_reload_ex(self.app_handle)['qResult']['qSuccess']
40
44
 
41
45
  def open_app(self, app_obj):
42
- opened_app = self.ega.open_doc(app_obj)['qReturn']
46
+ opened_app = self.ega.open_doc(app_obj)
43
47
  self.app_handle = self.ega.get_handle(opened_app)
44
48
  return opened_app['qGenericId']
45
49
 
@@ -127,7 +131,7 @@ class QixEngine:
127
131
  lb_param = {"qInfo": {"qId": "SLB01", "qType": "ListObject"},
128
132
  "qListObjectDef": lb_def}
129
133
  listobj_handle = self.eaa.create_session_object(self.app_handle, lb_param)["qReturn"]["qHandle"] # NOQA
130
- val_list = self.egoa.get_layout(listobj_handle)["qLayout"]["qListObject"]["qDataPages"][0]["qMatrix"] # NOQA
134
+ val_list = self.egoa.get_layout(listobj_handle)["qListObject"]["qDataPages"][0]["qMatrix"] # NOQA
131
135
  val_n_state_list = []
132
136
  for val in val_list:
133
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": "SelectExcluded",
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"]
@@ -13,7 +13,7 @@ class EngineGenericObjectApi:
13
13
  msg)
14
14
  )
15
15
  try:
16
- return response["result"]
16
+ return response["result"]["qLayout"]
17
17
  except KeyError:
18
18
  return response["error"]
19
19
 
@@ -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
- password='', serial='', no_data=False
65
- ):
66
- msg = json.dumps(
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['result']
68
+ return response["result"]["qReturn"]
75
69
  except KeyError:
76
70
  return response["error"]
77
71
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: qe-api-client
3
- Version: 1.1.0
3
+ Version: 1.2.0
4
4
  Summary: Python wrapper around Qlik Engine JSON API
5
5
  Home-page: https://github.com/lr-bicc/qe-api-client
6
6
  Author: Rumen Vasilev
@@ -6,6 +6,8 @@ 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
10
12
  qe_api_client/engine_generic_variable_api.py
11
13
  qe_api_client/engine_global_api.py
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
5
5
 
6
6
  setuptools.setup(
7
7
  name="qe-api-client",
8
- version="1.1.0",
8
+ version="1.2.0",
9
9
  author="Rumen Vasilev",
10
10
  author_email="R.Vasilev@LRWorld.com",
11
11
  description="Python wrapper around Qlik Engine JSON API",
@@ -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['qReturn'])
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['qReturn'])
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)["qLayout"]["qListObject"]["qDataPages"][0]["qMatrix"] # NOQA
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)["qLayout"]["qListObject"]["qDataPages"][0]["qMatrix"] # NOQA
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['qReturn']["qHandle"], 1,
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['qReturn']["qGenericId"].
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['qReturn']["qType"], "Doc",
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,
File without changes
File without changes
File without changes