q2rad 0.1.140__py3-none-any.whl → 0.1.142__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.
Potentially problematic release.
This version of q2rad might be problematic. Click here for more details.
- q2rad/q2actions.py +5 -4
- q2rad/q2forms.py +8 -5
- q2rad/q2lines.py +1 -1
- q2rad/q2modules.py +1 -1
- q2rad/q2rad.py +94 -65
- q2rad/q2raddb.py +8 -5
- q2rad/q2reports.py +14 -7
- q2rad/q2utils.py +1 -1
- q2rad/version.py +1 -1
- {q2rad-0.1.140.dist-info → q2rad-0.1.142.dist-info}/METADATA +1 -1
- q2rad-0.1.142.dist-info/RECORD +23 -0
- q2rad-0.1.140.dist-info/RECORD +0 -23
- {q2rad-0.1.140.dist-info → q2rad-0.1.142.dist-info}/LICENSE +0 -0
- {q2rad-0.1.140.dist-info → q2rad-0.1.142.dist-info}/WHEEL +0 -0
- {q2rad-0.1.140.dist-info → q2rad-0.1.142.dist-info}/entry_points.txt +0 -0
q2rad/q2actions.py
CHANGED
|
@@ -143,18 +143,20 @@ class Q2Actions(Q2Form, Q2_save_and_run):
|
|
|
143
143
|
self.prev_form.run_action("Run")
|
|
144
144
|
|
|
145
145
|
def action_mode_valid(self):
|
|
146
|
-
for x in self.widgets():
|
|
146
|
+
for x in [x for x in self.widgets()]:
|
|
147
147
|
if x.startswith("_"):
|
|
148
148
|
continue
|
|
149
149
|
elif x.startswith("/"):
|
|
150
150
|
continue
|
|
151
151
|
elif not hasattr(self.widgets()[x], "set_disabled"):
|
|
152
152
|
continue
|
|
153
|
-
elif x in ("action_mode", "ordnum", "comment", "seq"):
|
|
153
|
+
elif x in ("action_mode", "ordnum", "comment", "seq", "name", "action_text", "crud_buttons"):
|
|
154
154
|
continue
|
|
155
155
|
else:
|
|
156
156
|
self.widgets()[x].set_disabled(self.s.action_mode != "2")
|
|
157
|
-
|
|
157
|
+
|
|
158
|
+
# self.w.name.set_enabled(True)
|
|
159
|
+
# self.w.action_mode.set_enabled(True)
|
|
158
160
|
|
|
159
161
|
def select_child_form(self):
|
|
160
162
|
choice = choice_form()
|
|
@@ -180,4 +182,3 @@ class Q2Actions(Q2Form, Q2_save_and_run):
|
|
|
180
182
|
self.action_mode_valid()
|
|
181
183
|
if self.s.action_worker != "":
|
|
182
184
|
self.w.tab.set_tab(_("Action Script"))
|
|
183
|
-
# self.next_sequense()
|
q2rad/q2forms.py
CHANGED
|
@@ -49,7 +49,6 @@ class Q2Forms(Q2Form, Q2_save_and_run):
|
|
|
49
49
|
self.db = q2app.q2_app.db_logic
|
|
50
50
|
cursor: Q2Cursor = self.db.table(table_name="forms", order="seq")
|
|
51
51
|
model = Q2CursorModel(cursor)
|
|
52
|
-
model.set_order("seq").refresh()
|
|
53
52
|
self.set_model(model)
|
|
54
53
|
|
|
55
54
|
self.add_action("/crud")
|
|
@@ -162,7 +161,7 @@ class Q2Forms(Q2Form, Q2_save_and_run):
|
|
|
162
161
|
self.add_control("comment", gridlabel=_("Comments"), datatype="longtext")
|
|
163
162
|
|
|
164
163
|
if self.add_control("/t", _("Build")):
|
|
165
|
-
self.add_control("/vs")
|
|
164
|
+
self.add_control("/vs", tag="build")
|
|
166
165
|
self.add_control("/v")
|
|
167
166
|
self.add_control(
|
|
168
167
|
"before_form_build",
|
|
@@ -243,6 +242,13 @@ class Q2Forms(Q2Form, Q2_save_and_run):
|
|
|
243
242
|
nogrid="*",
|
|
244
243
|
control="code",
|
|
245
244
|
)
|
|
245
|
+
if self.add_control("/t", _("Refresh")):
|
|
246
|
+
self.add_control(
|
|
247
|
+
"form_refresh",
|
|
248
|
+
label=_(""),
|
|
249
|
+
nogrid="*",
|
|
250
|
+
control="code",
|
|
251
|
+
)
|
|
246
252
|
if self.add_control("/t", _("After close")):
|
|
247
253
|
self.add_control(
|
|
248
254
|
"after_form_closed",
|
|
@@ -272,9 +278,6 @@ class Q2Forms(Q2Form, Q2_save_and_run):
|
|
|
272
278
|
name = self.r.name
|
|
273
279
|
self.q2_app.run_form(name)
|
|
274
280
|
|
|
275
|
-
# def before_form_show(self):
|
|
276
|
-
# self.next_sequense()
|
|
277
|
-
|
|
278
281
|
def before_crud_save(self):
|
|
279
282
|
if self.s.name == "":
|
|
280
283
|
q2Mess(_("Give me some NAME!!!"))
|
q2rad/q2lines.py
CHANGED
|
@@ -54,7 +54,7 @@ SQL_DATATYPES = (
|
|
|
54
54
|
)
|
|
55
55
|
HAS_DATADEC = ("dec", "numeric", "num")
|
|
56
56
|
HAS_DATALEN = ("char", "varchar") + HAS_DATADEC
|
|
57
|
-
WIDGETS = ("line", "text", "code", "button", "check", "radio", "combo", "list", "spin", "image")
|
|
57
|
+
WIDGETS = ("line", "text", "code", "button", "check", "radio", "combo", "list", "spin", "image", "widget")
|
|
58
58
|
# "date;"
|
|
59
59
|
# "frame;"
|
|
60
60
|
# "grid;"
|
q2rad/q2modules.py
CHANGED
q2rad/q2rad.py
CHANGED
|
@@ -86,7 +86,9 @@ set_logging()
|
|
|
86
86
|
_logger = logging.getLogger(__name__)
|
|
87
87
|
|
|
88
88
|
|
|
89
|
-
def get_report(report_name):
|
|
89
|
+
def get_report(report_name=""):
|
|
90
|
+
if report_name == "":
|
|
91
|
+
return Q2RadReport()
|
|
90
92
|
content = q2app.q2_app.db_logic.get("reports", f"name='{report_name}'", "content")
|
|
91
93
|
if content:
|
|
92
94
|
return Q2RadReport(content)
|
|
@@ -99,24 +101,19 @@ def run_form(form_name, order="", where=""):
|
|
|
99
101
|
return q2app.q2_app.run_form(form_name, order=order, where=where)
|
|
100
102
|
|
|
101
103
|
|
|
102
|
-
def run_module1(module_name):
|
|
103
|
-
return q2app.q2_app.run_module(module_name)
|
|
104
|
-
|
|
105
|
-
|
|
106
104
|
def run_module(module_name=None, globals=globals(), locals=locals(), script="", import_only=False):
|
|
107
105
|
if module_name is not None:
|
|
108
106
|
script = q2app.q2_app.db_logic.get("modules", f"name = '{module_name}'", "script")
|
|
109
107
|
if not script:
|
|
110
108
|
return
|
|
111
109
|
code = q2app.q2_app.code_compiler(script)
|
|
112
|
-
|
|
113
110
|
if code["code"] is False:
|
|
114
|
-
|
|
111
|
+
msg = code["error"]
|
|
115
112
|
if threading.current_thread() is threading.main_thread():
|
|
116
|
-
q2Mess(f"
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
113
|
+
q2Mess(f"{msg}".replace("\n", "<br>").replace(" ", " "))
|
|
114
|
+
print(f"{msg}")
|
|
115
|
+
print("-" * 25)
|
|
116
|
+
logging.error(msg)
|
|
120
117
|
return
|
|
121
118
|
else:
|
|
122
119
|
if import_only:
|
|
@@ -142,26 +139,59 @@ def run_module(module_name=None, globals=globals(), locals=locals(), script="",
|
|
|
142
139
|
except ReturnEvent:
|
|
143
140
|
pass
|
|
144
141
|
except Exception:
|
|
145
|
-
|
|
146
|
-
vars = "<br>".join(
|
|
147
|
-
[
|
|
148
|
-
f"<b>{x}</b>:{str(locals[x])[:100]}"
|
|
149
|
-
for x in locals
|
|
150
|
-
if x not in ("RETURN", "ReturnEvent", "mem", "self", "q2_app")
|
|
151
|
-
]
|
|
152
|
-
)
|
|
153
|
-
if threading.current_thread() is threading.main_thread():
|
|
154
|
-
q2Mess(
|
|
155
|
-
f"""Runtime error:<br><br>{trace}<br><br>{vars}""".replace("\n", "<br>").replace(
|
|
156
|
-
" ", " "
|
|
157
|
-
)
|
|
158
|
-
)
|
|
159
|
-
else:
|
|
160
|
-
print(f"""Runtime error:\n{trace}\n\n{vars}""")
|
|
161
|
-
print("-" * 25)
|
|
142
|
+
explain_error()
|
|
162
143
|
return locals["RETURN"]
|
|
163
144
|
|
|
164
145
|
|
|
146
|
+
def explain_error(tb=None, errtype=None):
|
|
147
|
+
error = {}
|
|
148
|
+
stack = []
|
|
149
|
+
if tb is None:
|
|
150
|
+
tb = sys.exc_info()[2]
|
|
151
|
+
errtype = sys.exc_info()[1]
|
|
152
|
+
while tb.tb_next:
|
|
153
|
+
stack.append([tb.tb_frame.f_lineno, tb.tb_frame.f_code.co_filename])
|
|
154
|
+
tb = tb.tb_next
|
|
155
|
+
line_no = tb.tb_frame.f_lineno
|
|
156
|
+
script = tb.tb_frame.f_code.co_filename[1:-1].split("\n")
|
|
157
|
+
errline = script[line_no - 1]
|
|
158
|
+
script[line_no - 1] = "******" + script[line_no - 1]
|
|
159
|
+
|
|
160
|
+
error["errtype"] = errtype
|
|
161
|
+
error["lineno"] = tb.tb_frame.f_lineno
|
|
162
|
+
error["errline"] = errline
|
|
163
|
+
|
|
164
|
+
error["script"] = "\n".join(script)
|
|
165
|
+
error["locals"] = dict(tb.tb_frame.f_locals)
|
|
166
|
+
stack.reverse()
|
|
167
|
+
error["stack"] = stack
|
|
168
|
+
|
|
169
|
+
msg = []
|
|
170
|
+
msg.append("Runtime error:")
|
|
171
|
+
msg.append(str(error["errtype"]))
|
|
172
|
+
msg.append(f"Line:{error['lineno']}:{errline}")
|
|
173
|
+
msg.append("Code:")
|
|
174
|
+
msg.append("-" * 25)
|
|
175
|
+
msg.append(error["script"])
|
|
176
|
+
msg.append("-" * 25)
|
|
177
|
+
msg.append("Local variables:")
|
|
178
|
+
for x in error["locals"]:
|
|
179
|
+
if x in ("RETURN", "ReturnEvent", "mem", "self", "q2_app", "form", "myapp", "__name__"):
|
|
180
|
+
continue
|
|
181
|
+
value = str(error["locals"][x])[:100]
|
|
182
|
+
msg.append(f"{x}:{value}")
|
|
183
|
+
msg.append("-" * 25)
|
|
184
|
+
msg = "\n".join(msg)
|
|
185
|
+
|
|
186
|
+
print("-" * 25)
|
|
187
|
+
print(f"{msg}")
|
|
188
|
+
print("-" * 25)
|
|
189
|
+
logging.error(msg)
|
|
190
|
+
if threading.current_thread() is threading.main_thread():
|
|
191
|
+
q2Mess(f"""{msg}""".replace("\n", "<br>").replace(" ", " ").replace("\t", " " * 4))
|
|
192
|
+
return msg
|
|
193
|
+
|
|
194
|
+
|
|
165
195
|
class Q2RadApp(Q2App):
|
|
166
196
|
def __init__(self, title=""):
|
|
167
197
|
|
|
@@ -197,6 +227,11 @@ class Q2RadApp(Q2App):
|
|
|
197
227
|
|
|
198
228
|
self.const = const
|
|
199
229
|
|
|
230
|
+
sys.excepthook = self.handle_error
|
|
231
|
+
|
|
232
|
+
def handle_error(self, exc_type, exc_value, exc_traceback):
|
|
233
|
+
explain_error(exc_traceback, exc_value)
|
|
234
|
+
|
|
200
235
|
def clear_app_info(self):
|
|
201
236
|
self.app_url = None
|
|
202
237
|
self.app_title = ""
|
|
@@ -246,9 +281,9 @@ class Q2RadApp(Q2App):
|
|
|
246
281
|
self.migrate_db_data()
|
|
247
282
|
wait.step("looking for updates")
|
|
248
283
|
self.process_events()
|
|
249
|
-
self.update_app_packages()
|
|
250
284
|
wait.step("Done!")
|
|
251
285
|
wait.close()
|
|
286
|
+
self.update_app_packages()
|
|
252
287
|
|
|
253
288
|
self.run_module("manifest")
|
|
254
289
|
self.run_module("version")
|
|
@@ -471,20 +506,6 @@ class Q2RadApp(Q2App):
|
|
|
471
506
|
about.append("<b>q2RAD</b>")
|
|
472
507
|
about.append("Versions:")
|
|
473
508
|
about.append(f"<b>Python</b>: {sys.version}<p>")
|
|
474
|
-
# w = Q2WaitShow(len(q2_modules))
|
|
475
|
-
# for package in q2_modules:
|
|
476
|
-
# w.step()
|
|
477
|
-
# latest_version, current_version = self.get_package_versions(package)
|
|
478
|
-
# if latest_version:
|
|
479
|
-
# if current_version != latest_version:
|
|
480
|
-
# latest_version_text = f"({latest_version })"
|
|
481
|
-
# else:
|
|
482
|
-
# latest_version_text = ""
|
|
483
|
-
# else:
|
|
484
|
-
# latest_version_text = _(" (Can't load packacke info)")
|
|
485
|
-
|
|
486
|
-
# about.append(f"<b>{package}</b>: {current_version}{latest_version_text}")
|
|
487
|
-
# w.close()
|
|
488
509
|
|
|
489
510
|
task = Q2Tasker("Checking packages version")
|
|
490
511
|
for package in q2_modules:
|
|
@@ -551,17 +572,6 @@ class Q2RadApp(Q2App):
|
|
|
551
572
|
if rez[x] is False:
|
|
552
573
|
errors.append(x)
|
|
553
574
|
|
|
554
|
-
# w = Q2WaitShow(len(icons))
|
|
555
|
-
# errors = []
|
|
556
|
-
# # q2Mess
|
|
557
|
-
# for x in icons:
|
|
558
|
-
# if x == "":
|
|
559
|
-
# continue
|
|
560
|
-
# w.step(x)
|
|
561
|
-
# if self.asset_file_loader(x) is False:
|
|
562
|
-
# errors.append(x)
|
|
563
|
-
# w.close()
|
|
564
|
-
|
|
565
575
|
if os.path.isfile("assets/q2gui.ico"):
|
|
566
576
|
shutil.copyfile("assets/q2gui.ico", "assets/q2rad.ico")
|
|
567
577
|
|
|
@@ -876,6 +886,8 @@ class Q2RadApp(Q2App):
|
|
|
876
886
|
form.cancel_button = form_dic["cancel_button"]
|
|
877
887
|
|
|
878
888
|
form.valid = self.code_runner(form_dic["form_valid"], form)
|
|
889
|
+
form.form_refresh = self.code_runner(form_dic["form_refresh"], form)
|
|
890
|
+
|
|
879
891
|
form.after_form_closed = self.code_runner(form_dic["after_form_closed"], form)
|
|
880
892
|
|
|
881
893
|
form.before_form_build = self.code_runner(form_dic["before_form_build"], form)
|
|
@@ -952,36 +964,53 @@ class Q2RadApp(Q2App):
|
|
|
952
964
|
|
|
953
965
|
return form
|
|
954
966
|
|
|
955
|
-
def code_error(self):
|
|
956
|
-
return traceback.format_exc()
|
|
957
|
-
|
|
958
967
|
def code_compiler(self, script):
|
|
959
|
-
if "return" in script or "?" in script:
|
|
960
|
-
|
|
968
|
+
if "return" in script or "?" in script or "import" in script:
|
|
969
|
+
# modify script for
|
|
970
|
+
new_script_lines = []
|
|
961
971
|
in_def = False
|
|
962
972
|
for x in script.split("\n"):
|
|
973
|
+
# when in_def is True - do not modify return
|
|
963
974
|
if re.findall(r"^def|^class", x):
|
|
964
975
|
in_def = True
|
|
965
976
|
elif not re.findall(r"^\s+", x):
|
|
966
977
|
in_def = False
|
|
967
|
-
#
|
|
978
|
+
# return
|
|
968
979
|
if in_def is False and re.findall(r"^\s*return\W*.*|;\s*return\W*.*", x):
|
|
969
980
|
if x.strip() == "return":
|
|
970
981
|
x = x.replace("return", "raise ReturnEvent")
|
|
971
982
|
else:
|
|
972
983
|
x = x.replace("return", "RETURN = ") + "; raise ReturnEvent"
|
|
984
|
+
# print
|
|
973
985
|
if re.findall(r"^\s*\?\W*.*", x):
|
|
986
|
+
# lets print it
|
|
974
987
|
x = x.split("?")[0] + "print(" + "".join(x.split("?")[1:]) + ")"
|
|
975
|
-
|
|
976
|
-
|
|
988
|
+
# import
|
|
989
|
+
if re.findall(r"^\s*import\W*.*", x):
|
|
990
|
+
module = x.split("import")[1].strip()
|
|
991
|
+
if self.db_logic.get("modules", f"name='{module}'", "name"):
|
|
992
|
+
x = x.split("import")[0] + f"run_module('{module}', import_only=True)"
|
|
993
|
+
|
|
994
|
+
new_script_lines.append(x)
|
|
995
|
+
script = "\n".join(new_script_lines)
|
|
977
996
|
try:
|
|
978
|
-
code = compile(script, "
|
|
997
|
+
code = compile(script, f"<{script}>", "exec")
|
|
979
998
|
return {"code": code, "error": ""}
|
|
980
999
|
except Exception:
|
|
981
|
-
|
|
1000
|
+
error = sys.exc_info()[1]
|
|
1001
|
+
msg = []
|
|
1002
|
+
msg.append("Compile error:")
|
|
1003
|
+
msg.append(error.msg)
|
|
1004
|
+
msg.append(f"Line:{error.lineno}:{error.text}")
|
|
1005
|
+
msg.append("Code:")
|
|
1006
|
+
msg.append("-" * 25)
|
|
1007
|
+
msg.append(error.filename[1:-1])
|
|
1008
|
+
msg.append("-" * 25)
|
|
1009
|
+
msg = "\n".join(msg)
|
|
1010
|
+
|
|
982
1011
|
return {
|
|
983
1012
|
"code": False,
|
|
984
|
-
"error":
|
|
1013
|
+
"error": msg,
|
|
985
1014
|
}
|
|
986
1015
|
|
|
987
1016
|
def code_runner(self, script, form=None, __name__="__main__"):
|
q2rad/q2raddb.py
CHANGED
|
@@ -80,6 +80,13 @@ class q2cursor(Q2Cursor):
|
|
|
80
80
|
q2_db = q2app.q2_app.db_data
|
|
81
81
|
super().__init__(q2_db, sql)
|
|
82
82
|
|
|
83
|
+
def q2form(self):
|
|
84
|
+
form = Q2Form(self.sql)
|
|
85
|
+
for x in self.record(0):
|
|
86
|
+
form.add_control(x, x, datalen=250)
|
|
87
|
+
form.set_model(Q2CursorModel(self))
|
|
88
|
+
return form
|
|
89
|
+
|
|
83
90
|
def browse(self):
|
|
84
91
|
if self.row_count() <= 0:
|
|
85
92
|
q2Mess(
|
|
@@ -91,11 +98,7 @@ class q2cursor(Q2Cursor):
|
|
|
91
98
|
"""
|
|
92
99
|
)
|
|
93
100
|
else:
|
|
94
|
-
|
|
95
|
-
for x in self.record(0):
|
|
96
|
-
form.add_control(x, x, datalen=250)
|
|
97
|
-
form.set_model(Q2CursorModel(self))
|
|
98
|
-
form.run()
|
|
101
|
+
self.q2form().run()
|
|
99
102
|
return self
|
|
100
103
|
|
|
101
104
|
|
q2rad/q2reports.py
CHANGED
|
@@ -20,7 +20,7 @@ if __name__ == "__main__":
|
|
|
20
20
|
|
|
21
21
|
main()
|
|
22
22
|
|
|
23
|
-
from q2gui.q2dialogs import q2AskYN
|
|
23
|
+
from q2gui.q2dialogs import q2AskYN, q2mess
|
|
24
24
|
from q2gui.q2widget import Q2Widget
|
|
25
25
|
|
|
26
26
|
from q2gui.q2app import Q2Actions
|
|
@@ -118,15 +118,22 @@ class Q2RadReport(Q2Report):
|
|
|
118
118
|
|
|
119
119
|
def data_start(self):
|
|
120
120
|
super().data_start()
|
|
121
|
-
|
|
121
|
+
print(self.data_sets)
|
|
122
|
+
if self.current_data_set_name in self.data_cursors:
|
|
123
|
+
self.waitbar = Q2WaitShow(self.data_cursors[self.current_data_set_name].row_count())
|
|
124
|
+
elif self.current_data_set_name in self.data_sets:
|
|
125
|
+
self.waitbar = Q2WaitShow(len(self.data_sets[self.current_data_set_name]))
|
|
122
126
|
|
|
123
127
|
def data_step(self):
|
|
124
128
|
super().data_step()
|
|
125
|
-
self.waitbar
|
|
129
|
+
if self.waitbar:
|
|
130
|
+
self.waitbar.step()
|
|
126
131
|
|
|
127
132
|
def data_stop(self):
|
|
128
133
|
super().data_stop()
|
|
129
|
-
self.waitbar
|
|
134
|
+
if self.waitbar:
|
|
135
|
+
self.waitbar.close()
|
|
136
|
+
self.waitbar = None
|
|
130
137
|
self.last_focus_widget.set_focus()
|
|
131
138
|
q2app.q2_app.process_events()
|
|
132
139
|
|
|
@@ -140,10 +147,10 @@ class Q2RadReport(Q2Report):
|
|
|
140
147
|
|
|
141
148
|
def worker():
|
|
142
149
|
def real_worker():
|
|
143
|
-
q2WaitMax(len(self.report_content
|
|
144
|
-
for x in self.report_content
|
|
150
|
+
q2WaitMax(len(self.report_content.get("queries", {})))
|
|
151
|
+
for x in self.report_content.get("queries", {}):
|
|
145
152
|
q2WaitStep()
|
|
146
|
-
sql = self.report_content
|
|
153
|
+
sql = self.report_content.get("queries", {})[x]
|
|
147
154
|
sql_params = re_find_param.findall(sql)
|
|
148
155
|
for p in sql_params:
|
|
149
156
|
value = self.params.get(p[1:], "")
|
q2rad/q2utils.py
CHANGED
q2rad/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.1.
|
|
1
|
+
__version__ = "0.1.142"
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
q2rad/__init__.py,sha256=sUmWCYp2n0GJN5uzzKpn9l9ZFlArwAuHGVPMYslda_8,181
|
|
2
|
+
q2rad/__main__.py,sha256=zP4JARM-FzFHM-vWLehx7c5N4v4m_F-TuMobCdFzr4Q,824
|
|
3
|
+
q2rad/q2actions.py,sha256=PkyoTySX3pN2ehR--zB6K8CoW_HU_B43sdcAySECFu8,6815
|
|
4
|
+
q2rad/q2appmanager.py,sha256=YDbDEK0YBVH5fjRV8KjUsNVku_lfKkLZzBVgVd90X4w,13516
|
|
5
|
+
q2rad/q2appselector.py,sha256=W6lz6Ddz9If-i01OOkxiJ2LvIZXcImDY8c-HPsWvFaM,12054
|
|
6
|
+
q2rad/q2constants.py,sha256=UDtFMZNxZvgtb2tGn-YWzJfnCklv1_sR2AojEIiKCG8,3531
|
|
7
|
+
q2rad/q2forms.py,sha256=lhCMii2cl51j2EEJJ6rQAfF0FWHeTL22zQkiBWql-v8,9816
|
|
8
|
+
q2rad/q2lines.py,sha256=eXJL7SdCAvey3oXKZeT_RS7aZ7ls4XlcSZ_6bWpsD0Y,11448
|
|
9
|
+
q2rad/q2market.py,sha256=pqo16gG6ic0vMgBllwdzdb_KX3SFCSG5wY1dqRv77qs,2768
|
|
10
|
+
q2rad/q2modules.py,sha256=9VT5DSIzibYOShsrh4EzCOD5360fYHPZrOF3jtvdPVg,3913
|
|
11
|
+
q2rad/q2packages.py,sha256=y3_eZyScxZqHH0saGpeelleG3WuNx8MfCbTPtRqzses,3460
|
|
12
|
+
q2rad/q2queries.py,sha256=09OsTt05VBY6Bcn2f7jvqUEWpQO2e248HmKUNuLtnr0,12065
|
|
13
|
+
q2rad/q2rad.py,sha256=KSQkXtr5NAIPFoNoGrTgmaiy58hfNsduxwuk2vcElh8,37864
|
|
14
|
+
q2rad/q2raddb.py,sha256=R0xu0KBqFKPsM6iJY87pTre5BLMmgZPo0tn9j8p53vk,4366
|
|
15
|
+
q2rad/q2reports.py,sha256=qhYFsg_4OeWLyvr3Hzr0mPLXz0qKFKrAeyEj6_S2_MU,80064
|
|
16
|
+
q2rad/q2stylesettings.py,sha256=J7eXvljWew-Kn-IWDT5v6j8v3gmKYfzvngscauhe4d4,2971
|
|
17
|
+
q2rad/q2utils.py,sha256=yHQxSkE0FIyKYPBmiaMjZF68YeGkKmg3ppVAFbq8C8g,9664
|
|
18
|
+
q2rad/version.py,sha256=SFKDnCPUeeZba9kiuOOKzza3q2B1Eedqdh218sd5hZw,23
|
|
19
|
+
q2rad-0.1.142.dist-info/entry_points.txt,sha256=DmsJQE6f3wYuhdN2h6ARYxSe8_d03paeepfGpdVj5rs,42
|
|
20
|
+
q2rad-0.1.142.dist-info/LICENSE,sha256=JRR3LlR18ghhYXT4G2cWgXmnxRvcuVcKlqncWWK4MRY,10347
|
|
21
|
+
q2rad-0.1.142.dist-info/METADATA,sha256=1oNqTB7FCtGAp-Dx9gqlVMRbWBIhy7q1eqaGbfxJsK0,3388
|
|
22
|
+
q2rad-0.1.142.dist-info/WHEEL,sha256=WGfLGfLX43Ei_YORXSnT54hxFygu34kMpcQdmgmEwCQ,88
|
|
23
|
+
q2rad-0.1.142.dist-info/RECORD,,
|
q2rad-0.1.140.dist-info/RECORD
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
q2rad/__init__.py,sha256=sUmWCYp2n0GJN5uzzKpn9l9ZFlArwAuHGVPMYslda_8,181
|
|
2
|
-
q2rad/__main__.py,sha256=zP4JARM-FzFHM-vWLehx7c5N4v4m_F-TuMobCdFzr4Q,824
|
|
3
|
-
q2rad/q2actions.py,sha256=X3Rrr1ejMQpi_HDvKkLzkKFFQ8YP8xA8YQjfXBh1Rmo,6743
|
|
4
|
-
q2rad/q2appmanager.py,sha256=YDbDEK0YBVH5fjRV8KjUsNVku_lfKkLZzBVgVd90X4w,13516
|
|
5
|
-
q2rad/q2appselector.py,sha256=W6lz6Ddz9If-i01OOkxiJ2LvIZXcImDY8c-HPsWvFaM,12054
|
|
6
|
-
q2rad/q2constants.py,sha256=UDtFMZNxZvgtb2tGn-YWzJfnCklv1_sR2AojEIiKCG8,3531
|
|
7
|
-
q2rad/q2forms.py,sha256=dQnOLVAr0KjysqRsH8KcD1mgkf9WQAPFDhU7j-O-COU,9693
|
|
8
|
-
q2rad/q2lines.py,sha256=a5qFEv5Ts5RdZ2p9QjFWpU2Cj9Hx_Gi0_cEw4-VLMcY,11438
|
|
9
|
-
q2rad/q2market.py,sha256=pqo16gG6ic0vMgBllwdzdb_KX3SFCSG5wY1dqRv77qs,2768
|
|
10
|
-
q2rad/q2modules.py,sha256=1sm7ZNVj1nrn01r3UoaAiE1g6sBzWhxvINp-_YMsBCc,3866
|
|
11
|
-
q2rad/q2packages.py,sha256=y3_eZyScxZqHH0saGpeelleG3WuNx8MfCbTPtRqzses,3460
|
|
12
|
-
q2rad/q2queries.py,sha256=09OsTt05VBY6Bcn2f7jvqUEWpQO2e248HmKUNuLtnr0,12065
|
|
13
|
-
q2rad/q2rad.py,sha256=tsFnQt8XXRcynOXnReVwx0z5K7fSHJFsFpbMvviTWsk,36964
|
|
14
|
-
q2rad/q2raddb.py,sha256=ipn43U6CReHXQjXblweaU792zaX4ZPIDFRY4v_agqKU,4327
|
|
15
|
-
q2rad/q2reports.py,sha256=j-jyLOgeGU8HUKcstoW8TURx3ntoLJed-2nrjEYk9IQ,79695
|
|
16
|
-
q2rad/q2stylesettings.py,sha256=J7eXvljWew-Kn-IWDT5v6j8v3gmKYfzvngscauhe4d4,2971
|
|
17
|
-
q2rad/q2utils.py,sha256=OY9Bc8B8CLwuY0hTPZR_3qaOy0YJPmiFAwSsKmqFAWo,9665
|
|
18
|
-
q2rad/version.py,sha256=JHcsd54ujcSwDy3O0DC8THAKTEbAUZtcXBbyCa7gGFQ,23
|
|
19
|
-
q2rad-0.1.140.dist-info/entry_points.txt,sha256=DmsJQE6f3wYuhdN2h6ARYxSe8_d03paeepfGpdVj5rs,42
|
|
20
|
-
q2rad-0.1.140.dist-info/LICENSE,sha256=JRR3LlR18ghhYXT4G2cWgXmnxRvcuVcKlqncWWK4MRY,10347
|
|
21
|
-
q2rad-0.1.140.dist-info/METADATA,sha256=RqoM0_ruW58dh9R2Y6-Ark8x-KWBVpYbSsSGdzasNMQ,3388
|
|
22
|
-
q2rad-0.1.140.dist-info/WHEEL,sha256=WGfLGfLX43Ei_YORXSnT54hxFygu34kMpcQdmgmEwCQ,88
|
|
23
|
-
q2rad-0.1.140.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|