QuLab 2.4.15__cp311-cp311-macosx_10_9_universal2.whl → 2.4.16__cp311-cp311-macosx_10_9_universal2.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.
- {QuLab-2.4.15.dist-info → QuLab-2.4.16.dist-info}/METADATA +1 -1
- {QuLab-2.4.15.dist-info → QuLab-2.4.16.dist-info}/RECORD +9 -9
- qulab/executor/load.py +22 -7
- qulab/fun.cpython-311-darwin.so +0 -0
- qulab/version.py +1 -1
- {QuLab-2.4.15.dist-info → QuLab-2.4.16.dist-info}/LICENSE +0 -0
- {QuLab-2.4.15.dist-info → QuLab-2.4.16.dist-info}/WHEEL +0 -0
- {QuLab-2.4.15.dist-info → QuLab-2.4.16.dist-info}/entry_points.txt +0 -0
- {QuLab-2.4.15.dist-info → QuLab-2.4.16.dist-info}/top_level.txt +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
qulab/__init__.py,sha256=P-Mx2p4TVmL91SoxoeXcj8Qm0x4xUf5Q_FLk0Yc_gIQ,138
|
|
2
2
|
qulab/__main__.py,sha256=JgErYkiskih8Y6oRwowALtR-rwQhAAdqOYWjQraRIPI,59
|
|
3
3
|
qulab/dicttree.py,sha256=tRRMpGZYVOLw0TEByE3_2Ss8FdOmzuGL9e1DWbs8qoY,13684
|
|
4
|
-
qulab/fun.cpython-311-darwin.so,sha256=
|
|
5
|
-
qulab/version.py,sha256=
|
|
4
|
+
qulab/fun.cpython-311-darwin.so,sha256=4UizSKt5rDt7vdZVD0pkpw5COMzc0CVh4OpeSim3jFU,126848
|
|
5
|
+
qulab/version.py,sha256=rVOnxEJVvl0ZWvCblBzVBGcp0VALbV_koS5W-UB9zfk,22
|
|
6
6
|
qulab/cli/__init__.py,sha256=tgDIkkeIoasQXAifJZ6NU8jDgpNgb2a-B0C4nF0evrE,559
|
|
7
7
|
qulab/cli/config.py,sha256=QksTYD3-RBYBG8xnKLAh7EXrNOwxr128XXr30ZTFW6A,2983
|
|
8
8
|
qulab/executor/__init__.py,sha256=LosPzOMaljSZY1thy_Fxtbrgq7uubJszMABEB7oM7tU,101
|
|
9
9
|
qulab/executor/cli.py,sha256=LRSb5-J8Tn7dj-fxwCp3OP_6YUgPRoY-f8O18sbWG8I,5164
|
|
10
|
-
qulab/executor/load.py,sha256=
|
|
10
|
+
qulab/executor/load.py,sha256=yTLoWOtTvmCTuYFZ6qFsjBM_CvsrKgmUkBSHHz3223A,10899
|
|
11
11
|
qulab/executor/schedule.py,sha256=SfMZys8WdmIvfW5fPM42g-F6XwewTdpC0-puhf5TA54,11721
|
|
12
12
|
qulab/executor/storage.py,sha256=M66Q5_Uc5MMfc_QAuuaaexwAz7wxBPMkeleB5nRpQmI,4621
|
|
13
13
|
qulab/executor/transform.py,sha256=inaOn6eqCs22ZZ0xAQl8s8YCoEACaXSwFNNu7jqdwAk,2148
|
|
@@ -91,9 +91,9 @@ qulab/visualization/plot_seq.py,sha256=UWTS6p9nfX_7B8ehcYo6UnSTUCjkBsNU9jiOeW2ca
|
|
|
91
91
|
qulab/visualization/qdat.py,sha256=ZeevBYWkzbww4xZnsjHhw7wRorJCBzbG0iEu-XQB4EA,5735
|
|
92
92
|
qulab/visualization/rot3d.py,sha256=lMrEJlRLwYe6NMBlGkKYpp_V9CTipOAuDy6QW_cQK00,734
|
|
93
93
|
qulab/visualization/widgets.py,sha256=6KkiTyQ8J-ei70LbPQZAK35wjktY47w2IveOa682ftA,3180
|
|
94
|
-
QuLab-2.4.
|
|
95
|
-
QuLab-2.4.
|
|
96
|
-
QuLab-2.4.
|
|
97
|
-
QuLab-2.4.
|
|
98
|
-
QuLab-2.4.
|
|
99
|
-
QuLab-2.4.
|
|
94
|
+
QuLab-2.4.16.dist-info/LICENSE,sha256=PRzIKxZtpQcH7whTG6Egvzl1A0BvnSf30tmR2X2KrpA,1065
|
|
95
|
+
QuLab-2.4.16.dist-info/METADATA,sha256=6JcU_aAzDy5e3eGklWSR_xUELNWTZukNp65w5mch6ws,3699
|
|
96
|
+
QuLab-2.4.16.dist-info/WHEEL,sha256=K10eKSN6_vzvMOgXxWbVOQNR7Orfl6gBTCpCI8bcYx4,114
|
|
97
|
+
QuLab-2.4.16.dist-info/entry_points.txt,sha256=b0v1GXOwmxY-nCCsPN_rHZZvY9CtTbWqrGj8u1m8yHo,45
|
|
98
|
+
QuLab-2.4.16.dist-info/top_level.txt,sha256=3T886LbAsbvjonu_TDdmgxKYUn939BVTRPxPl9r4cEg,6
|
|
99
|
+
QuLab-2.4.16.dist-info/RECORD,,
|
qulab/executor/load.py
CHANGED
|
@@ -15,6 +15,7 @@ from .storage import Result
|
|
|
15
15
|
|
|
16
16
|
class SetConfigWorkflow():
|
|
17
17
|
__timeout__ = None
|
|
18
|
+
__mtime__ = 0
|
|
18
19
|
|
|
19
20
|
def __init__(self, key):
|
|
20
21
|
self.key = key
|
|
@@ -200,10 +201,13 @@ def load_workflow_from_file(file_name: str,
|
|
|
200
201
|
package='workflows') -> WorkflowType:
|
|
201
202
|
base_path = Path(base_path)
|
|
202
203
|
path = Path(file_name)
|
|
204
|
+
if not (base_path / path).exists():
|
|
205
|
+
raise FileNotFoundError(f"File not found: {base_path / path}")
|
|
203
206
|
module_name = f"{package}.{'.'.join([*path.parts[:-1], path.stem])}"
|
|
204
207
|
spec = spec_from_file_location(module_name, base_path / path)
|
|
205
208
|
module = module_from_spec(spec)
|
|
206
209
|
spec.loader.exec_module(module)
|
|
210
|
+
module.__mtime__ = (base_path / path).stat().st_mtime
|
|
207
211
|
|
|
208
212
|
if hasattr(module, 'entries'):
|
|
209
213
|
return module
|
|
@@ -224,13 +228,16 @@ def load_workflow_from_template(template_path: str,
|
|
|
224
228
|
mappping: dict[str, str],
|
|
225
229
|
base_path: str | Path,
|
|
226
230
|
target_path: str | None = None,
|
|
227
|
-
package='workflows'
|
|
231
|
+
package='workflows',
|
|
232
|
+
mtime: float = 0) -> WorkflowType:
|
|
228
233
|
base_path = Path(base_path)
|
|
229
234
|
path = Path(template_path)
|
|
230
235
|
|
|
231
236
|
with open(base_path / path) as f:
|
|
232
237
|
content = f.read()
|
|
233
238
|
|
|
239
|
+
mtime = max(Path(template_path).stat().st_mtime, mtime)
|
|
240
|
+
|
|
234
241
|
def replace(text):
|
|
235
242
|
"""
|
|
236
243
|
将给定文本中的所有 _D_("var") 替换为 ${var}。
|
|
@@ -267,7 +274,7 @@ def load_workflow_from_template(template_path: str,
|
|
|
267
274
|
with open(file, 'w') as f:
|
|
268
275
|
f.write(content)
|
|
269
276
|
else:
|
|
270
|
-
if file.stat().st_mtime <
|
|
277
|
+
if file.stat().st_mtime < mtime:
|
|
271
278
|
with open(file, 'w') as f:
|
|
272
279
|
f.write(content)
|
|
273
280
|
else:
|
|
@@ -277,22 +284,24 @@ def load_workflow_from_template(template_path: str,
|
|
|
277
284
|
)
|
|
278
285
|
|
|
279
286
|
module = load_workflow_from_file(str(path), base_path, package)
|
|
287
|
+
module.__mtime__ = max(mtime, module.__mtime__)
|
|
280
288
|
|
|
281
289
|
return module
|
|
282
290
|
|
|
283
291
|
|
|
284
292
|
def load_workflow(workflow: str | tuple[str, dict],
|
|
285
293
|
base_path: str | Path,
|
|
286
|
-
package='workflows'
|
|
294
|
+
package='workflows',
|
|
295
|
+
mtime: float = 0) -> WorkflowType:
|
|
287
296
|
if isinstance(workflow, tuple):
|
|
288
297
|
if len(workflow) == 2:
|
|
289
298
|
file_name, mapping = workflow
|
|
290
299
|
w = load_workflow_from_template(file_name, mapping, base_path,
|
|
291
|
-
None, package)
|
|
300
|
+
None, package, mtime)
|
|
292
301
|
elif len(workflow) == 3:
|
|
293
302
|
template_path, target_path, mapping = workflow
|
|
294
303
|
w = load_workflow_from_template(template_path, mapping, base_path,
|
|
295
|
-
target_path, package)
|
|
304
|
+
target_path, package, mtime)
|
|
296
305
|
else:
|
|
297
306
|
raise ValueError(f"Invalid workflow: {workflow}")
|
|
298
307
|
w.__workflow_id__ = str(Path(w.__file__).relative_to(base_path))
|
|
@@ -312,8 +321,14 @@ def load_workflow(workflow: str | tuple[str, dict],
|
|
|
312
321
|
|
|
313
322
|
def get_dependents(workflow: WorkflowType,
|
|
314
323
|
code_path: str | Path) -> list[WorkflowType]:
|
|
315
|
-
return [
|
|
324
|
+
return [
|
|
325
|
+
load_workflow(n, code_path, mtime=workflow.__mtime__)
|
|
326
|
+
for n in workflow.depends()[0]
|
|
327
|
+
]
|
|
316
328
|
|
|
317
329
|
|
|
318
330
|
def get_entries(workflow: WorkflowType, code_path: str | Path) -> WorkflowType:
|
|
319
|
-
return [
|
|
331
|
+
return [
|
|
332
|
+
load_workflow(n, code_path, mtime=workflow.__mtime__)
|
|
333
|
+
for n in workflow.entries()
|
|
334
|
+
]
|
qulab/fun.cpython-311-darwin.so
CHANGED
|
Binary file
|
qulab/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "2.4.
|
|
1
|
+
__version__ = "2.4.16"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|