qe-api-client 2.1.0__py3-none-any.whl → 2.2.0__py3-none-any.whl

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.
@@ -141,10 +141,10 @@ class EngineAppApi:
141
141
  Parameters:
142
142
  doc_handle (int): The handle identifying the app document.
143
143
  field_name (str): The name of the field to retrieve.
144
- state_name (str): The name of the state. Default is an empty string, indicating the default state.
144
+ state_name (str): The name of the alternate state. Default state is current selections.
145
145
 
146
146
  Returns:
147
- dict: The retrieved field (qReturn). In case of an error, returns the error information.
147
+ dict: Object interface.
148
148
  """
149
149
  msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": doc_handle, "method": "GetField",
150
150
  "params": {"qFieldName": field_name, "qStateName": state_name}})
@@ -160,10 +160,7 @@ class EngineAppApi:
160
160
 
161
161
  Parameters:
162
162
  doc_handle (int): The handle identifying the app document.
163
- q_id (str): The ID of the new object. Default is "LB01".
164
- q_type (str): The type of the new object. Default is "ListObject".
165
- struct_name (str): The name of the structure defining the object. Default is "qListObjectDef".
166
- ob_struct (dict): The structure defining the object.
163
+ prop (dict): Information about the object.
167
164
 
168
165
  Returns:
169
166
  dict: The created object (qReturn). In case of an error, returns the error information.
@@ -223,8 +220,16 @@ class EngineAppApi:
223
220
  return response['error']
224
221
 
225
222
  def clear_all(self, doc_handle, locked_also=False, alt_state=""):
223
+ """
224
+ Clear selections in fields for current state. Locked fields are not cleared by default.
225
+
226
+ Parameters:
227
+ doc_handle (int): The handle identifying the app document.
228
+ locked_also (bool): When true, clears the selection for locked fields.
229
+ alt_state (str): Alternate state name. When set, applies to alternate state instead of current.
230
+ """
226
231
  msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": doc_handle, "method": "ClearAll",
227
- "params": [locked_also, alt_state]})
232
+ "params": {"qLockedAlso": locked_also, "qStateName": alt_state}})
228
233
  response = json.loads(self.engine_socket.send_call(self.engine_socket, msg))
229
234
  try:
230
235
  return response['result']
@@ -250,45 +255,24 @@ class EngineAppApi:
250
255
  # can contain the same dimension.
251
256
  # Parameters:
252
257
  # qProp (MANDATORY: send dim_id, dim_title, dim_grouping, dim_field, dim_label, meta_def (optional) # NOQA
253
- def create_master_dim(self, doc_handle, dim_id, dim_title,
254
- dim_grouping="N", dim_field='', dim_label='',
255
- meta_def=""):
258
+ def create_dimension(self, doc_handle, prop):
256
259
  msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": doc_handle, "method": "CreateDimension",
257
- "params": [{
258
- "qInfo": {
259
- "qId": dim_id,
260
- "qType": "Dimension"
261
- },
262
- "qDim": {
263
- "title": dim_title,
264
- "qGrouping": dim_grouping,
265
- "qFieldDefs": [
266
- dim_field
267
- ],
268
- "qFieldLabels": [
269
- dim_label
270
- ]
271
- },
272
- "qMetaDef": {
273
- "title": meta_def
274
- }
275
- }]
276
- })
260
+ "params": {"qProp": prop}})
277
261
  response = json.loads(self.engine_socket.send_call(self.engine_socket, msg))
278
262
  try:
279
- return response['result']
263
+ return response["result"]["qReturn"]
280
264
  except KeyError:
281
265
  return response['error']
282
266
 
283
267
  # DestroyDimension method: Removes a dimension
284
- def destroy_dim(self, doc_handle, dim_id):
268
+ def destroy_dimension(self, doc_handle, dim_id):
285
269
  msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": doc_handle, "method": "DestroyDimension",
286
- "params": [{dim_id}]})
270
+ "params": {"qId": dim_id}})
287
271
  response = json.loads(self.engine_socket.send_call(self.engine_socket, msg))
288
272
  try:
289
- return response['result']
273
+ return response["result"]["qSuccess"]
290
274
  except KeyError:
291
- return response['error']
275
+ return response["error"]
292
276
 
293
277
  # DestroyMeasure method: Removes a measure
294
278
  def destroy_measure(self, doc_handle, measure_id):
@@ -347,25 +331,12 @@ class EngineAppApi:
347
331
  # can contain the same dimension.
348
332
  # Parameters:
349
333
  # qProp (MANDATORY: send dim_id, dim_title, dim_grouping, dim_field, dim_label, meta_def (optional) # NOQA
350
- def create_master_measure(self, doc_handle, measure_id, measure_title, measure_expr, meta_def=""):
351
- msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": doc_handle,
352
- "method": "CreateMeasure", "params": [{
353
- "qInfo": {
354
- "qId": measure_id,
355
- "qType": "Measure"
356
- },
357
- "qMeasure": {
358
- "qLabel": measure_title,
359
- "qDef": measure_expr
360
- },
361
- "qMetaDef": {
362
- "title": measure_title
363
- }
364
- }]
365
- })
334
+ def create_measure(self, doc_handle, prop):
335
+ msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": doc_handle, "method": "CreateMeasure",
336
+ "params": {"qProp": prop}})
366
337
  response = json.loads(self.engine_socket.send_call(self.engine_socket, msg))
367
338
  try:
368
- return response['result']
339
+ return response["result"]["qReturn"]
369
340
  except KeyError:
370
341
  return response['error']
371
342
 
@@ -18,77 +18,87 @@ class EngineFieldApi:
18
18
  """
19
19
  self.engine_socket = socket
20
20
 
21
- def select(self, fld_handle, value):
21
+ def select(self, fld_handle, value, soft_lock = False, excluded_values_mode = 0):
22
22
  """
23
- Selects a specific value in a field.
23
+ Selects field values matching a search string.
24
24
 
25
25
  Args:
26
26
  fld_handle (int): The handle of the field.
27
- value (str): The value to select.
27
+ value (str): String to search for. Can contain wild cards or numeric search criteria.
28
+ soft_lock (bool): Set to true to ignore locks; in that case, locked fields can be selected.
29
+ excluded_values_mode (int): Include excluded values in search.
28
30
 
29
31
  Returns:
30
32
  dict: The response from the engine, containing the result or an error message.
31
33
  """
32
34
  msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": fld_handle, "method": "Select",
33
- "params": [value, False, 0]})
35
+ "params": {"qMatch": value, "qSoftLock": soft_lock,
36
+ "qExcludedValuesMode": excluded_values_mode}})
34
37
  response = json.loads(self.engine_socket.send_call(self.engine_socket, msg))
35
38
  try:
36
39
  return response
37
40
  except KeyError:
38
41
  return response["error"]
39
42
 
40
- def select_values(self, fld_handle, values=None):
43
+ def select_values(self, fld_handle, values, toggle_mode = False, soft_lock = False):
41
44
  """
42
45
  Selects multiple values in a field.
43
46
 
44
47
  Args:
45
48
  fld_handle (int): The handle of the field.
46
- values (list, optional): A list of values to select. Defaults to an empty list.
49
+ values (list): A list of field values to select. Mandatory field.
50
+ toggle_mode (bool): The default value is false.
51
+ soft_lock (bool): Set to true to ignore locks; in that case, locked fields can be selected.
52
+ The default value is false.
47
53
 
48
54
  Returns:
49
55
  dict: The response from the engine, containing the result or an error message.
50
56
  """
51
- if values is None:
52
- values = []
53
57
  msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": fld_handle, "method": "SelectValues",
54
- "params": [values, False, False]})
58
+ "params": {"qFieldValues": values, "qToggleMode": toggle_mode, "qSoftLock": soft_lock}})
55
59
  response = json.loads(self.engine_socket.send_call(self.engine_socket, msg))
56
60
  try:
57
- return response
61
+ return response["result"]["qReturn"]
58
62
  except KeyError:
59
63
  return response["error"]
60
64
 
61
- def select_excluded(self, fld_handle):
65
+ def select_excluded(self, fld_handle, soft_lock=False):
62
66
  """
63
- Selects all excluded values in a field.
67
+ Inverts the current selections.
64
68
 
65
69
  Args:
66
70
  fld_handle (int): The handle of the field.
71
+ soft_lock (bool): Set to true to ignore locks; in that case, locked fields can be selected.
72
+ The default value is false.
67
73
 
68
74
  Returns:
69
- dict: The response from the engine, containing the result or an error message.
75
+ bool: true/false. The operation is successful if qReturn is set to true.
70
76
  """
71
- msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": fld_handle, "method": "SelectExcluded", "params": []})
77
+ msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": fld_handle, "method": "SelectExcluded",
78
+ "params": {"qSoftLock": soft_lock}})
72
79
  response = json.loads(self.engine_socket.send_call(self.engine_socket, msg))
73
80
  try:
74
- return response["result"]
81
+ return response["result"]["qReturn"]
75
82
  except KeyError:
76
83
  return response["error"]
77
84
 
78
- def select_possible(self, fld_handle):
85
+ def select_possible(self, fld_handle, soft_lock=False):
79
86
  """
80
87
  Selects all possible values in a field.
81
88
 
82
89
  Args:
83
90
  fld_handle (int): The handle of the field.
91
+ soft_lock (bool): Set to true to ignore locks; in that case, locked fields can be selected.
92
+ The default value is false.
84
93
 
85
94
  Returns:
86
- dict: The response from the engine, containing the result or an error message.
95
+ bool: true/false. The operation is successful if qReturn is set to true.
87
96
  """
88
- msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": fld_handle, "method": "SelectPossible", "params": []})
97
+ msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": fld_handle, "method": "SelectPossible",
98
+ "params": {"qSoftLock": soft_lock}})
89
99
  response = json.loads(self.engine_socket.send_call(self.engine_socket, msg))
90
100
  try:
91
- return response["result"]
101
+ return response["result"]["qReturn"]
92
102
  except KeyError:
93
103
  return response["error"]
94
104
 
@@ -102,7 +112,7 @@ class EngineFieldApi:
102
112
  Returns:
103
113
  dict: The response from the engine, containing the result or an error message.
104
114
  """
105
- msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": fld_handle, "method": "Clear", "params": []})
115
+ msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": fld_handle, "method": "Clear", "params": {}})
106
116
  response = json.loads(self.engine_socket.send_call(self.engine_socket, msg))
107
117
  try:
108
118
  return response["result"]
@@ -119,9 +129,9 @@ class EngineFieldApi:
119
129
  Returns:
120
130
  int: The number of distinct values in the field, or an error message.
121
131
  """
122
- msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": fld_handle, "method": "GetCardinal", "params": []})
132
+ msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": fld_handle, "method": "GetCardinal", "params": {}})
123
133
  response = json.loads(self.engine_socket.send_call(self.engine_socket, msg))
124
134
  try:
125
- return response["result"]
135
+ return response["result"]["qReturn"]
126
136
  except KeyError:
127
137
  return response["error"]
@@ -85,7 +85,8 @@ class EngineGlobalApi:
85
85
  Returns:
86
86
  dict: Information about the deletion result.
87
87
  """
88
- msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": -1, "method": "DeleteApp", "params": [app_name]})
88
+ msg = json.dumps({"jsonrpc": "2.0", "id": 0, "handle": -1, "method": "DeleteApp",
89
+ "params": {"qAppId": app_name}})
89
90
  response = json.loads(
90
91
  self.engine_socket.send_call(self.engine_socket, msg))
91
92
  try:
qe_api_client/engine.py CHANGED
@@ -12,6 +12,12 @@ import pandas as pd
12
12
 
13
13
 
14
14
  class QixEngine:
15
+ """
16
+ The class of the client to interact with the Qlik Sense Engine API.
17
+
18
+ Methods:
19
+ select_in_dimension(app_handle, dimension_name, list_of_values): Selects values in a given field.
20
+ """
15
21
 
16
22
  def __init__(self, url, user_directory=None, user_id=None, ca_certs=None, certfile=None, keyfile=None, app_id=None):
17
23
  self.url = url
@@ -33,68 +39,62 @@ class QixEngine:
33
39
  self.structs = structs
34
40
  self.app_handle = ''
35
41
 
36
- def create_app(self, app_name='my_app'):
37
- app = self.ega.create_app(app_name)
38
- try:
39
- return app['qAppId']
40
- except KeyError:
41
- return app['message']
42
-
43
- def load_script(self, script):
44
- self.eaa.set_script(self.app_handle, script)
45
- return self.eaa.do_reload_ex(self.app_handle)['qResult']['qSuccess']
46
-
47
- def open_app(self, app_obj):
48
- opened_app = self.ega.open_doc(app_obj)
49
- self.app_handle = self.ega.get_handle(opened_app)
50
- return opened_app['qGenericId']
51
-
52
- def select_in_dimension(self, dimension_name, list_of_values):
53
- lb_field = self.eaa.get_field(self.app_handle, dimension_name)
54
- fld_handle = self.ega.get_handle(lb_field)
42
+ def select_in_dimension(self, app_handle, dimension_name, list_of_values):
43
+ lb_field = self.eaa.get_field(app_handle, dimension_name)
44
+ fld_handle = self.get_handle(lb_field)
55
45
  values_to_select = []
56
46
  for val in list_of_values:
57
- val = {'qText': val}
58
- values_to_select.append(val)
47
+ fld_value = self.structs.field_value(val)
48
+ values_to_select.append(fld_value)
59
49
  return self.efa.select_values(fld_handle, values_to_select)
60
50
 
61
- def select_excluded_in_dimension(self, dimension_name):
62
- lb_field = self.eaa.get_field(self.app_handle, dimension_name)
63
- fld_handle = self.ega.get_handle(lb_field)
51
+ def select_excluded_in_dimension(self, app_handle, dimension_name):
52
+ lb_field = self.eaa.get_field(app_handle, dimension_name)
53
+ fld_handle = self.get_handle(lb_field)
64
54
  return self.efa.select_excluded(fld_handle)
65
55
 
66
- def select_possible_in_dimension(self, dimension_name):
67
- lb_field = self.eaa.get_field(self.app_handle, dimension_name)
68
- fld_handle = self.ega.get_handle(lb_field)
56
+ def select_possible_in_dimension(self, app_handle, dimension_name):
57
+ lb_field = self.eaa.get_field(app_handle, dimension_name)
58
+ fld_handle = self.get_handle(lb_field)
69
59
  return self.efa.select_possible(fld_handle)
70
60
 
71
61
  # return a list of tuples where first value in tuple is the actual
72
62
  # data value and the second tuple value is that
73
63
  # values selection state
74
- def get_list_object_data(self, dimension_name):
75
- lb_field = self.eaa.get_field(self.app_handle, dimension_name)
76
- fld_handle = self.ega.get_handle(lb_field)
77
- nx_page = self.structs.nx_page(0, 0, self.efa.get_cardinal(fld_handle)["qReturn"])
78
- lb_def = self.structs.list_object_def("$", "",[dimension_name], None,
79
- None, [nx_page])
80
- lb_param = {"qInfo": {"qId": "SLB01", "qType": "ListObject"}, "qListObjectDef": lb_def}
81
- listobj_handle = self.eaa.create_session_object(self.app_handle, lb_param)["qHandle"] # NOQA
64
+ def get_list_object_data(self, app_handle, dimension_name):
65
+ lb_field = self.eaa.get_field(app_handle, dimension_name)
66
+ fld_handle = self.get_handle(lb_field)
67
+
68
+ nx_inline_dimension_def = self.structs.nx_inline_dimension_def([dimension_name])
69
+ nx_page = self.structs.nx_page(0, 0, self.efa.get_cardinal(fld_handle))
70
+ lb_def = self.structs.list_object_def("$", "", nx_inline_dimension_def,
71
+ [nx_page])
72
+
73
+ # Create info structure
74
+ nx_info = self.structs.nx_info("ListObject", "SLB01")
75
+
76
+ # Create generic object properties structure
77
+ gen_obj_props = self.structs.generic_object_properties(nx_info, "qListObjectDef", lb_def)
78
+ listobj = self.eaa.create_session_object(app_handle, gen_obj_props) # NOQA
79
+ listobj_handle = self.get_handle(listobj)
82
80
  val_list = self.egoa.get_layout(listobj_handle)["qListObject"]["qDataPages"][0]["qMatrix"] # NOQA
83
81
  val_n_state_list = []
84
82
  for val in val_list:
85
83
  val_n_state_list.append((val[0]["qText"], val[0]["qState"]))
86
- return val_n_state_list
87
84
 
88
- def clear_selection_in_dimension(self, dimension_name):
89
- lb_field = self.eaa.get_field(self.app_handle, dimension_name)
90
- fld_handle = self.ega.get_handle(lb_field)
91
- return self.efa.clear(fld_handle)['qReturn']
92
-
93
- def clear_all_selections(self):
94
- return self.eaa.clear_all(self.app_handle, True)
85
+ return val_n_state_list
95
86
 
96
- def delete_app(self, app_name):
97
- return self.ega.delete_app(app_name)['qSuccess']
87
+ def clear_selection_in_dimension(self, app_handle, dimension_name):
88
+ lb_field = self.eaa.get_field(app_handle, dimension_name)
89
+ fld_handle = self.get_handle(lb_field)
90
+ return self.efa.clear(fld_handle)
91
+
92
+ def create_single_master_dimension(self, app_handle, dim_title, dim_def, dim_label):
93
+ nx_info = self.structs.nx_info("dimension")
94
+ lb_dim_def = self.structs.nx_library_dimension_def("N",[dim_def],[""],dim_label)
95
+ gen_dim_props = self.structs.generic_dimension_properties(nx_info, lb_dim_def, dim_title)
96
+ master_dim = self.eaa.create_dimension(app_handle, gen_dim_props)
97
+ return master_dim
98
98
 
99
99
  def disconnect(self):
100
100
  self.conn.close_qvengine_connection(self.conn)
qe_api_client/structs.py CHANGED
@@ -1,15 +1,5 @@
1
- def list_object_def(state_name="$", library_id="", field_defs=None, field_labels=None, sort_criterias=None,
2
- initial_data_fetch=None):
3
- if initial_data_fetch is None:
4
- initial_data_fetch = []
5
- if sort_criterias is None:
6
- sort_criterias = []
7
- if field_labels is None:
8
- field_labels = []
9
- if field_defs is None:
10
- field_defs = []
11
- return {"qStateName": state_name, "qLibraryId": library_id,
12
- "qDef": {"qFieldDefs": field_defs, "qFieldLabels": field_labels, "qSortCriterias": sort_criterias},
1
+ def list_object_def(state_name="$", library_id="", field_defs=[], initial_data_fetch=[]):
2
+ return {"qStateName": state_name, "qLibraryId": library_id, "qDef": field_defs,
13
3
  "qInitialDataFetch": initial_data_fetch}
14
4
 
15
5
  def hypercube_def(state_name="$", nx_dims=[], nx_meas=[], nx_page=[], inter_column_sort=[0, 1, 2], suppress_zero=False,
@@ -56,3 +46,24 @@ def generic_object_properties(info, prop_name, prop_def, extends_id="", state_na
56
46
  def sort_criteria(state=0, freq=0, numeric=0, ascii=0, load_order=1):
57
47
  return {"qSortByState": state, "qSortByFrequency": freq, "qSortByNumeric": numeric, "qSortByAscii": ascii,
58
48
  "qSortByLoadOrder": load_order, "qSortByExpression": 0, "qExpression": {"qv": ""}}
49
+
50
+ def field_value(text, is_numeric = False, number = 0):
51
+ return {"qText": text, "qIsNumeric": is_numeric, "qNumber": number}
52
+
53
+ def generic_dimension_properties(info, lb_dim_def, dim_title):
54
+ return {"qInfo": info, "qDim": lb_dim_def, "qMetaDef": {"title": dim_title}}
55
+
56
+ def nx_library_dimension_def(grouping="N", field_definitions=[], field_labels=[""], label_expression=""):
57
+ return {"qGrouping": grouping, "qFieldDefs": field_definitions, "qFieldLabels": field_labels,
58
+ "qLabelExpression": label_expression}
59
+
60
+ def nx_library_measure_def(label, mes_def, grouping="N", expressions=[], active_expression=0, label_expression="",
61
+ num_format={}):
62
+ return {"qLabel": label, "qDef": mes_def,"qGrouping": grouping, "qExpressions": expressions,
63
+ "qActiveExpression": active_expression, "qLabelExpression": label_expression, "qNumFormat": num_format}
64
+
65
+ def num_format(type="U", n_dec=10, use_thou=0, fmt="", dec="", thou=""):
66
+ return {"qType": type, "qnDec": n_dec, "qUseThou": use_thou, "qFmt": fmt, "qDec": dec, "qThou": thou}
67
+
68
+ def generic_measure_properties(info, lb_meas_def, meas_title):
69
+ return {"qInfo": info, "qMeasure": lb_meas_def, "qMetaDef": {"title": meas_title}}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: qe-api-client
3
- Version: 2.1.0
3
+ Version: 2.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
@@ -1,18 +1,18 @@
1
1
  qe_api_client/__init__.py,sha256=bypB4CIjpHtf5Pu_NwtJajC69zqQD7qB9jo8cCX0B54,23
2
- qe_api_client/engine.py,sha256=3x1bP79kdEIuvXpY3PE0MAMx9E9bKkMDOxQrPNIiWAk,14746
2
+ qe_api_client/engine.py,sha256=zK6FxdsxiFy3-IpZ664gcsoJU9dpTdVm4NWn6zgXa6E,14944
3
3
  qe_api_client/engine_communicator.py,sha256=Va8Kz4cN6uyKLzV3JllBw08KbU4uDn8e-5pIm5Kmsfs,1291
4
4
  qe_api_client/engine_helper.py,sha256=DSZR92-pGqklzki53QufgGr9tUTKKXZyF_fHEfXokTs,2382
5
- qe_api_client/structs.py,sha256=yNca4rQjc_AfchsEso047JvBBpLZqRPIiS-SbxXcNfs,3157
5
+ qe_api_client/structs.py,sha256=9oB8-APCIkt1nNtwRpqGGMvzF42SX2ep5r4zSrLkjL4,3999
6
6
  qe_api_client/api_classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- qe_api_client/api_classes/engine_app_api.py,sha256=6SK-aE6gHgrNvd_VunCvdh1HHe1y2wYo3NO9KhCPXd8,38306
8
- qe_api_client/api_classes/engine_field_api.py,sha256=KiFhs2ev3S-92JklWzIVtfTEZ1oCiHEAanm1AXtV38s,4407
7
+ qe_api_client/api_classes/engine_app_api.py,sha256=3bQHufiKvWHOOKjX50WK7pbH-fM0Rz6WMblEgEjAn2I,36847
8
+ qe_api_client/api_classes/engine_field_api.py,sha256=zCLIR7rmxqwIrJYK_-uHVEhMvBcEP2qofuX8ZPygqCA,5479
9
9
  qe_api_client/api_classes/engine_generic_dimension_api.py,sha256=1joTET6GWCTW-80wafrajLQuMyFwIPp0QKoILyLdP1U,1377
10
10
  qe_api_client/api_classes/engine_generic_measure_api.py,sha256=zbRYRA99LQS9SY3QVgoUABqgVDRPwBQ8o2ZbESVEsHE,1321
11
11
  qe_api_client/api_classes/engine_generic_object_api.py,sha256=nqsEtvKkt5XkUEIVUoBtNVXtmUvuifxrgTcw2fDuaOE,8218
12
12
  qe_api_client/api_classes/engine_generic_variable_api.py,sha256=sWXZpE-GLfcMijmfORnDNrJ6lmXX3x5TRHlkEu_i0BQ,2027
13
- qe_api_client/api_classes/engine_global_api.py,sha256=SdzhIP6Isco83xB1Y6y3LHKv-HjBTS_iMh-QdVYAl4g,27499
14
- qe_api_client-2.1.0.dist-info/LICENSE,sha256=2bm9uFabQZ3Ykb_SaSU_uUbAj2-htc6WJQmS_65qD00,1073
15
- qe_api_client-2.1.0.dist-info/METADATA,sha256=p4TqYcNoSN8CR6IHV9ITawbNwOnD-LWZi6756JLDoWU,1995
16
- qe_api_client-2.1.0.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
17
- qe_api_client-2.1.0.dist-info/top_level.txt,sha256=m_43YagP8UtZgJHmZEfu0vlBNwt36M01-Qby2jByMnk,14
18
- qe_api_client-2.1.0.dist-info/RECORD,,
13
+ qe_api_client/api_classes/engine_global_api.py,sha256=G6QQHI36WOo7W25zg4Uz__gMSLC2ptNTvbBdElPzgZI,27535
14
+ qe_api_client-2.2.0.dist-info/LICENSE,sha256=2bm9uFabQZ3Ykb_SaSU_uUbAj2-htc6WJQmS_65qD00,1073
15
+ qe_api_client-2.2.0.dist-info/METADATA,sha256=ZvtVqTUoNFA_a70UPxJWIjUptydO1Ij42w5Yy_hF8B0,1995
16
+ qe_api_client-2.2.0.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
17
+ qe_api_client-2.2.0.dist-info/top_level.txt,sha256=m_43YagP8UtZgJHmZEfu0vlBNwt36M01-Qby2jByMnk,14
18
+ qe_api_client-2.2.0.dist-info/RECORD,,