dv-flow-mgr 0.0.1.13777985638a1__py3-none-any.whl → 0.0.1.13797938654a1__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.
@@ -82,6 +82,8 @@ async def FileSet(runner, input) -> TaskDataResult:
82
82
  else:
83
83
  changed = True
84
84
 
85
+ _log.debug("<-- FileSet(%s) changed=%s" % (input.name, changed))
86
+
85
87
  return TaskDataResult(
86
88
  memento=memento,
87
89
  changed=changed,
@@ -1,4 +1,5 @@
1
1
  import dataclasses as dc
2
+ from datetime import datetime
2
3
  from rich.console import Console
3
4
 
4
5
  @dc.dataclass
@@ -11,12 +12,20 @@ class TaskListenerLog(object):
11
12
  if reason == 'enter':
12
13
  self.level += 1
13
14
  if not self.quiet:
14
- self.console.print("[green]>[%d][/green] Task %s" % (self.level, task.name))
15
+ self.console.print("[green]>> [%d][/green] Task %s" % (self.level, task.name))
15
16
  elif reason == 'leave':
16
17
  if self.quiet:
17
18
  if task.result.changed:
18
19
  self.console.print("[green]Done:[/green] %s" % (task.name,))
19
20
  else:
21
+ delta_s = None
22
+ if task.start is not None and task.end is not None:
23
+ delta = task.end - task.start
24
+ if delta.total_seconds() > 1:
25
+ delta_s = " %0.2fs" % delta.total_seconds()
26
+ else:
27
+ delta_s = " %0.2fmS" % (1000*delta.total_seconds())
28
+
20
29
  sev_pref_m = {
21
30
  "info": "[blue]I[/blue]",
22
31
  "warn": "[yellow]W[/yellow]",
@@ -38,9 +47,13 @@ class TaskListenerLog(object):
38
47
  else:
39
48
  self.console.print(" %s" % m.loc.path)
40
49
  if task.result.status == 0:
41
- self.console.print("[green]<[%d][/green] Task %s" % (self.level, task.name))
50
+ self.console.print("[green]<< [%d][/green] Task %s%s%s" % (
51
+ self.level,
52
+ task.name,
53
+ ("" if task.result.changed else " (up-to-date)"),
54
+ (delta_s if delta_s is not None else "")))
42
55
  else:
43
- self.console.print("[red]<[%d][/red] Task %s" % (self.level, task.name))
56
+ self.console.print("[red]<< [%d][/red] Task %s" % (self.level, task.name))
44
57
  self.level -= 1
45
58
  else:
46
59
  self.console.print("[red]-[/red] Task %s" % task.name)
dv_flow/mgr/task_node.py CHANGED
@@ -29,6 +29,8 @@ class TaskNode(object):
29
29
  rundir : str = dc.field(default=None)
30
30
  output : TaskDataOutput = dc.field(default=None)
31
31
  result : TaskDataResult = dc.field(default=None)
32
+ start : float = dc.field(default=None)
33
+ end : float = dc.field(default=None)
32
34
 
33
35
  _log : ClassVar = logging.getLogger("TaskNode")
34
36
 
@@ -45,6 +47,8 @@ class TaskNode(object):
45
47
  for dep in self.needs:
46
48
  changed |= dep.changed
47
49
 
50
+ self.rundir = rundir
51
+
48
52
  # TODO: Form dep-map from inputs
49
53
 
50
54
  dep_m = {}
@@ -4,6 +4,7 @@ import os
4
4
  import re
5
5
  import dataclasses as dc
6
6
  import logging
7
+ from datetime import datetime
7
8
  from toposort import toposort
8
9
  from typing import Any, Callable, ClassVar, List, Tuple, Union
9
10
  from .task_data import TaskDataInput, TaskDataOutput, TaskDataResult
@@ -99,6 +100,7 @@ class TaskSetRunner(TaskRunner):
99
100
  for i in range(len(active_task_l)):
100
101
  if active_task_l[i][1] == d:
101
102
  tt = active_task_l[i][0]
103
+ tt.end = datetime.now()
102
104
  if tt.result.memento is not None:
103
105
  dst_memento[tt.name] = tt.result.memento.model_dump()
104
106
  else:
@@ -122,6 +124,7 @@ class TaskSetRunner(TaskRunner):
122
124
  os.makedirs(rundir, exist_ok=True)
123
125
 
124
126
  self._notify(t, "enter")
127
+ t.start = datetime.now()
125
128
  coro = asyncio.Task(t.do_run(
126
129
  self,
127
130
  rundir,
@@ -139,6 +142,7 @@ class TaskSetRunner(TaskRunner):
139
142
  coros = list(at[1] for at in active_task_l)
140
143
  res = await asyncio.gather(*coros)
141
144
  for tt in active_task_l:
145
+ tt[0].end = datetime.now()
142
146
  if tt[0].result.memento is not None:
143
147
  dst_memento[tt[0].name] = tt[0].result.memento.model_dump()
144
148
  else:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: dv-flow-mgr
3
- Version: 0.0.1.13777985638a1
3
+ Version: 0.0.1.13797938654a1
4
4
  Summary: DV Flow Manager is a build system for silicon design
5
5
  Author-email: Matthew Ballance <matt.ballance@gmail.com>
6
6
  License: Apache License
@@ -23,25 +23,25 @@ dv_flow/mgr/task_graph_builder.py,sha256=AOltPyzd2Q9B67m0MyL59RPu3i2d5QrX3K-0gKW
23
23
  dv_flow/mgr/task_graph_runner.py,sha256=jUGI49QvxUCfQoKQDDk2psbeapIcCg72qNOW1JipHzM,2182
24
24
  dv_flow/mgr/task_graph_runner_local.py,sha256=OrydPwtQ8E7hYWvSXx0h7lI3nfUNFyklULhsyMwz9dA,4687
25
25
  dv_flow/mgr/task_impl_data.py,sha256=bFPijoKrh9x7fZN2DsvRJp0UHo-gGM0VjtDQISyfhFk,321
26
- dv_flow/mgr/task_listener_log.py,sha256=Aq48AKEJ2fP9SXIXuzC0hszEi6W6mnuAR8dV91mmLaE,1932
26
+ dv_flow/mgr/task_listener_log.py,sha256=NvqzGBEdf3EV8voy1sjA_prDeyMWJ77-730v8_fMof0,2532
27
27
  dv_flow/mgr/task_memento.py,sha256=C7VTQpBhDEoYuDmE6YTM-6TLMLnqHp6Y0Vat1aTgtCs,1096
28
- dv_flow/mgr/task_node.py,sha256=K65jWd2GYZH1oYlfkc5sx0eGzDbWdElA5EQXCremH-Y,12651
28
+ dv_flow/mgr/task_node.py,sha256=uuJGDgSySUyt2hz-I78w47fqpq4cIYtzrVj4RdKr_Cg,12765
29
29
  dv_flow/mgr/task_output.py,sha256=dkJhhNRFGFQSkVsw_bGirK0_0ghTxBYq1LjRMZCVWnA,245
30
30
  dv_flow/mgr/task_params_ctor.py,sha256=aXgB8o9xFPjaEjGW_xYkEC0N0apzGzGUPDj7g2ZLvus,1112
31
- dv_flow/mgr/task_runner.py,sha256=tWderVo2MqCgPC0A-HcrVQuAZ9Xx77EmJ0i3e-bmPfo,7621
31
+ dv_flow/mgr/task_runner.py,sha256=SHbhGfuOUmlbk-nZDDuk9FX7syWWcgmCuOZ2LwG5UFM,7799
32
32
  dv_flow/mgr/type.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
33
  dv_flow/mgr/type_def.py,sha256=KdhuNlfw-NKU-4VZFCnMPyj775yEB7cpr5tz73a9yuQ,259
34
34
  dv_flow/mgr/util.py,sha256=06eVyURF4ga-s8C9Sd3ZSDebwO4QS0XXaB8xADVbWRc,1437
35
35
  dv_flow/mgr/cmds/cmd_run.py,sha256=w1KdnS5Skg4RH1xTB1RZP7gAElZMNcRuOhz3G98n9uk,2467
36
36
  dv_flow/mgr/share/flow.json,sha256=lNmZex9NXkYbyb2aZseQfUOkV9CMyfH0iLODEI7EPBw,5096
37
37
  dv_flow/mgr/std/exec.py,sha256=ETx9xSxhdCD_iw6pcmhrafDCJ-41AneyEAPwQf3q-3w,452
38
- dv_flow/mgr/std/fileset.py,sha256=AOLARYXjJEmKAextB_4P4eRu2PHNPex961eq16QtgCc,3006
38
+ dv_flow/mgr/std/fileset.py,sha256=nW5Cg4IyCs-ccKKsIxA5W5aZvaluFk6LXDyFh9Jixcs,3076
39
39
  dv_flow/mgr/std/flow.dv,sha256=DpDTrRBfbIt4cJKLHqk_l6_nPkeFDKLVa5Ic4FZodNM,1587
40
40
  dv_flow/mgr/std/message.py,sha256=T8Ye44784rD6CT2qIAP5SD7sKPdAlGMFimc4IaPCxxE,200
41
41
  dv_flow/mgr/std/task_null.py,sha256=UKwUnqwFPBY8BO44ZAPcgehQB59kHZFa1qyZc1TwUqE,196
42
- dv_flow_mgr-0.0.1.13777985638a1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
43
- dv_flow_mgr-0.0.1.13777985638a1.dist-info/METADATA,sha256=ueDigzSUXzQYrN4x2qAuEAY4NoC7ljqfOPzBwDOgEqE,13314
44
- dv_flow_mgr-0.0.1.13777985638a1.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
45
- dv_flow_mgr-0.0.1.13777985638a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
46
- dv_flow_mgr-0.0.1.13777985638a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
47
- dv_flow_mgr-0.0.1.13777985638a1.dist-info/RECORD,,
42
+ dv_flow_mgr-0.0.1.13797938654a1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
43
+ dv_flow_mgr-0.0.1.13797938654a1.dist-info/METADATA,sha256=6evEmYV2TBYSFz0p38MsXK8JKIkJSbgoqLPnQ4L3388,13314
44
+ dv_flow_mgr-0.0.1.13797938654a1.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
45
+ dv_flow_mgr-0.0.1.13797938654a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
46
+ dv_flow_mgr-0.0.1.13797938654a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
47
+ dv_flow_mgr-0.0.1.13797938654a1.dist-info/RECORD,,