dv-flow-mgr 0.0.2.14148897378a1__py3-none-any.whl → 0.0.2.14149088756a1__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.
dv_flow/mgr/task_node.py CHANGED
@@ -29,6 +29,7 @@ import logging
29
29
  import toposort
30
30
  from typing import Any, Callable, ClassVar, Dict, List, Tuple
31
31
  from .task_data import TaskDataInput, TaskDataOutput, TaskDataResult
32
+ from .task_run_ctxt import TaskRunCtxt
32
33
  from .param import Param
33
34
 
34
35
  class RundirE(enum.Enum):
@@ -102,7 +103,7 @@ class TaskNode(object):
102
103
  self._log.debug("<-- _matches: %s %s" % (self.name, consumed))
103
104
  return consumed
104
105
 
105
- def _save_exec_data(self, rundir, input : TaskDataInput):
106
+ def _save_exec_data(self, rundir, ctxt : TaskRunCtxt, input : TaskDataInput):
106
107
  """Saves execution data to the rundir"""
107
108
  data = {
108
109
  "name": self.name,
@@ -110,6 +111,7 @@ class TaskNode(object):
110
111
  "rundir": rundir,
111
112
  "input": input.model_dump(warnings=False),
112
113
  "needs": [need[0].name for need in self.needs],
114
+ "commands": [cmd.dump_model() for cmd in ctxt._exec_info],
113
115
  "result": {
114
116
  "status": self.result.status,
115
117
  "changed": self.result.changed,
@@ -9,6 +9,7 @@ from typing import Any, Callable, ClassVar, Dict, List, Tuple
9
9
  from .task_data import TaskDataInput, TaskDataOutput, TaskDataResult
10
10
  from .task_def import ConsumesE, PassthroughE
11
11
  from .task_node import TaskNode
12
+ from .task_run_ctxt import TaskRunCtxt
12
13
  from .param_ref_eval import ParamRefEval
13
14
  from .param import Param
14
15
 
@@ -114,11 +115,15 @@ class TaskNodeLeaf(TaskNode):
114
115
  params=self.params,
115
116
  inputs=inputs,
116
117
  memento=memento)
118
+
119
+ ctxt = TaskRunCtxt(runner=self, rundir=input.rundir)
117
120
 
118
121
  self._log.debug("--> Call task method %s" % str(self.task))
119
122
  self.result : TaskDataResult = await self.task(self, input)
120
123
  self._log.debug("<-- Call task method %s" % str(self.task))
121
124
 
125
+ self.result.markers.extend(ctxt._markers)
126
+
122
127
  output=self.result.output.copy()
123
128
  for i,out in enumerate(output):
124
129
  out.src = self.name
@@ -174,7 +179,7 @@ class TaskNodeLeaf(TaskNode):
174
179
  output=output)
175
180
 
176
181
  if self.save_exec_data:
177
- self._save_exec_data(rundir, input)
182
+ self._save_exec_data(rundir, ctxt, input)
178
183
 
179
184
  # TODO:
180
185
  self._log.debug("<-- do_run: %s" % self.name)
@@ -0,0 +1,52 @@
1
+ import asyncio
2
+ import dataclasses as dc
3
+ from pydantic import BaseModel
4
+ import pydantic.dataclasses as pdc
5
+ import os
6
+ from typing import List
7
+ from .task_data import TaskMarker, SeverityE, TaskMarkerLoc
8
+
9
+ class ExecInfo(BaseModel):
10
+ cmd : List[str] = pdc.Field(default_factory=list)
11
+ status : int = pdc.Field(default=0)
12
+
13
+ @dc.dataclass
14
+ class TaskRunCtxt(object):
15
+ runner : 'TaskRunner'
16
+ rundir : str
17
+ _markers : List[TaskMarker] = dc.field(default_factory=list)
18
+ _exec_info : List[ExecInfo] = dc.field(default_factory=list)
19
+
20
+ async def exec(self,
21
+ cmd : List[str],
22
+ logfile=None,
23
+ logfilter=None,
24
+ cwd=None,
25
+ env=None):
26
+ if logfile is None:
27
+ logfile = "cmd_%d.log" % (self._exec_info.__len__() + 1)
28
+
29
+ fp = open(os.path.join(self.rundir, logfile), "w")
30
+ proc = await asyncio.create_subprocess_exec(
31
+ *cmd,
32
+ stdout=fp,
33
+ stderr=asyncio.subprocess.STDOUT,
34
+ cwd=(cwd if cwd is not None else self.rundir),
35
+ env=env)
36
+ fp.close()
37
+
38
+ status = await proc.wait()
39
+
40
+ self._exec_info.append(ExecInfo(cmd=cmd, status=status))
41
+
42
+ if status != 0:
43
+ self.error_marker("Command failed: %s" % " ".join(cmd))
44
+
45
+ def marker(self, msg : str, severity : SeverityE, loc : TaskMarkerLoc=None):
46
+ if loc is not None:
47
+ self._markers.append(TaskMarker(msg=msg, severity=severity, loc=loc))
48
+ else:
49
+ self._markers.append(TaskMarker(msg=msg, severity=severity))
50
+
51
+ def error(self, msg : str, loc : TaskMarkerLoc=None):
52
+ self.marker(msg=msg, severity=SeverityE.Error, loc=loc)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-flow-mgr
3
- Version: 0.0.2.14148897378a1
3
+ Version: 0.0.2.14149088756a1
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
@@ -19,7 +19,7 @@ dv_flow/mgr/task_def.py,sha256=Yf9bkWqSETeFUSbddbpvl2Cu3pyssvhdz0X2jxabniA,3751
19
19
  dv_flow/mgr/task_graph_builder.py,sha256=Z14ySv1SFanFovR8HePwKglyFSzc6JsS8Z4RLmggM6c,15316
20
20
  dv_flow/mgr/task_graph_dot_writer.py,sha256=GxqiYwQJbFgUQdnPCS9vpIYmYFbSXwnXCSbGmjbxC3M,2418
21
21
  dv_flow/mgr/task_listener_log.py,sha256=hrJEjSRXXoovDTcD1Cmhi3Spzw7uEJ-WP6tv6JUaa6s,4060
22
- dv_flow/mgr/task_node.py,sha256=7lZKsTbOS0Cuhe-TyPj9Gcuh1a4k3sliRXW81R4UGCg,4851
22
+ dv_flow/mgr/task_node.py,sha256=4LlMRQ30ZdIk-nZ0FCTfyrusrQWF9LQ1g3vhgMJXMcc,4981
23
23
  dv_flow/mgr/task_node_compound.py,sha256=mNu4nf9hVqu2698ue5fpE3FeAOkvJH0Ke2W9V0G3-As,2975
24
24
  dv_flow/mgr/task_node_ctor.py,sha256=COFGvm5PR2B92H3uW1yhDIUCmppo9U4IfOcv_Jrsreo,3952
25
25
  dv_flow/mgr/task_node_ctor_compound.py,sha256=n2Ad1jtX147cb99HTlLrx_21XUn109bJ18zDXr0pn2Q,4259
@@ -28,9 +28,10 @@ dv_flow/mgr/task_node_ctor_def_base.py,sha256=_8QQHKDkONio_ve0Z409yxC0AMO8ocNBPD
28
28
  dv_flow/mgr/task_node_ctor_proxy.py,sha256=ViOFJ64JM4-CGFZNl89BghFuKSQ66kZVqSj4v2PA6VA,1906
29
29
  dv_flow/mgr/task_node_ctor_task.py,sha256=d49g90TyPCMFR8BuWWqp4ym-MW5vGSdDR0V47Ru28JY,2232
30
30
  dv_flow/mgr/task_node_ctor_wrapper.py,sha256=Nb1CVcPHZofnb-iLWDHQWAxlTOdbRrnR9DdSxY8yOec,3626
31
- dv_flow/mgr/task_node_leaf.py,sha256=tI9m0GcaKsBccHmZCSTzc6vKyNgXezVB5vC28B75AFg,7416
31
+ dv_flow/mgr/task_node_leaf.py,sha256=f7LvifhUCRs94t_HpqJWyBygmjiN3KWgNjv-FaALj1s,7582
32
32
  dv_flow/mgr/task_output.py,sha256=ZwyvwnYj_gHOEFAEOH3m24Xfc4Cn77hb1j7LkX8_3C4,1086
33
33
  dv_flow/mgr/task_params_ctor.py,sha256=BPkbnoCtzhCxc1g8CJ6VimCcm5UAu92PXeDMhQ4lYsQ,1957
34
+ dv_flow/mgr/task_run_ctxt.py,sha256=ZyO0EzhWZ6uOAYhlByQQoYizyQWmJBSt8UhobTSb6n0,1728
34
35
  dv_flow/mgr/task_runner.py,sha256=-919VntXAe2XSuFW2dFpgvUre-NkILBnDBbAKBZYn5w,9594
35
36
  dv_flow/mgr/type.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
37
  dv_flow/mgr/type_def.py,sha256=NDeyplKrPnWwEv4yHkhXEMK9d9j39b5MOeLB-1Mchqo,1095
@@ -49,9 +50,9 @@ dv_flow/mgr/util/__main__.py,sha256=F0LXpCDpYTPalSo0dc1h_qZkip5v1AZYYh-vcYbh5s0,
49
50
  dv_flow/mgr/util/util.py,sha256=yg9oTPRiO87mkCSOQpOtlG9vyKPQzY3qp4OJkEMbWyY,1443
50
51
  dv_flow/mgr/util/cmds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
52
  dv_flow/mgr/util/cmds/cmd_schema.py,sha256=lrEI-Jwb8j4I4yYOn9hq7_7NYbK8leVxLesrHyEWm-E,1879
52
- dv_flow_mgr-0.0.2.14148897378a1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
53
- dv_flow_mgr-0.0.2.14148897378a1.dist-info/METADATA,sha256=h-oh4eGN5VaFwSkVl4wfntxgac783_x42eGairZBoso,13336
54
- dv_flow_mgr-0.0.2.14148897378a1.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
55
- dv_flow_mgr-0.0.2.14148897378a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
56
- dv_flow_mgr-0.0.2.14148897378a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
57
- dv_flow_mgr-0.0.2.14148897378a1.dist-info/RECORD,,
53
+ dv_flow_mgr-0.0.2.14149088756a1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
54
+ dv_flow_mgr-0.0.2.14149088756a1.dist-info/METADATA,sha256=nHqGvVQydbFlAzyHjJhoWc51_cqtJzbUbjkWFVerQus,13336
55
+ dv_flow_mgr-0.0.2.14149088756a1.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
56
+ dv_flow_mgr-0.0.2.14149088756a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
57
+ dv_flow_mgr-0.0.2.14149088756a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
58
+ dv_flow_mgr-0.0.2.14149088756a1.dist-info/RECORD,,