py2dag 0.1.10__py3-none-any.whl → 0.1.12__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.
py2dag/parser.py CHANGED
@@ -76,7 +76,14 @@ def parse(source: str, function_name: Optional[str] = None) -> Dict[str, Any]:
76
76
  for kw in value.keywords:
77
77
  if kw.arg is None:
78
78
  raise DSLParseError("**kwargs are not allowed")
79
- kwargs[kw.arg] = _literal(kw.value)
79
+ # Support variable-name keyword args as dependencies; literals remain in args
80
+ if isinstance(kw.value, ast.Name):
81
+ name = kw.value.id
82
+ if name not in defined:
83
+ raise DSLParseError(f"Undefined dependency: {name}")
84
+ deps.append(name)
85
+ else:
86
+ kwargs[kw.arg] = _literal(kw.value)
80
87
 
81
88
  ops.append({"id": var_name, "op": op_name, "deps": deps, "args": kwargs})
82
89
  elif isinstance(value, ast.JoinedStr):
@@ -171,9 +178,11 @@ def parse(source: str, function_name: Optional[str] = None) -> Dict[str, Any]:
171
178
  returned_var = const_id
172
179
  else:
173
180
  raise DSLParseError("return must return a variable name or literal")
174
- elif isinstance(stmt, (ast.For, ast.AsyncFor, ast.While)):
181
+ elif isinstance(stmt, (ast.For, ast.AsyncFor, ast.While, ast.If)):
175
182
  # Ignore control flow blocks; only top-level linear statements are modeled
176
183
  continue
184
+ elif isinstance(stmt, (ast.Pass,)):
185
+ continue
177
186
  else:
178
187
  raise DSLParseError("Only assignments, expression calls, and a final return are allowed in function body")
179
188
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: py2dag
3
- Version: 0.1.10
3
+ Version: 0.1.12
4
4
  Summary: Convert Python function plans to DAG (JSON, pseudo, optional SVG).
5
5
  License: MIT
6
6
  Author: rvergis
@@ -2,10 +2,10 @@ py2dag/__init__.py,sha256=i8VB44JCVcRJAcvnQtbH8YVRUz5j7dE355iRbikXPGQ,250
2
2
  py2dag/cli.py,sha256=BCBi5mNxOqeEN8uEMt_hiDx0iSt7ZE3y74cGXREzZ2I,1296
3
3
  py2dag/export_dagre.py,sha256=S244wUxBMuM9qXD8bklaslkMp3rcbBGWvMhwWVBzBF0,3487
4
4
  py2dag/export_svg.py,sha256=YyjqOuj8GhUTDWP70SKnnSWAKI1PvJwyOhHLwB29uNM,1812
5
- py2dag/parser.py,sha256=nj3QE_6iPBktdBQFt5DF0YYitPKVQRmtcuLxG9WyQjE,10444
5
+ py2dag/parser.py,sha256=1udeSmeFlH9qSXx5RTjrPg6Uof3_TtizSIMPJasp4aM,10950
6
6
  py2dag/pseudo.py,sha256=NJK61slyFLtSjhj8gJDJneUInEpBN57_41g8IfHNPWI,922
7
- py2dag-0.1.10.dist-info/LICENSE,sha256=3Qee1EPwej_nusovTbyIQ8LvD2rXHdM0c6LNwk_D8Kc,1067
8
- py2dag-0.1.10.dist-info/METADATA,sha256=0VGU_tJB5PeSIuZVr2ZTUkxqvXCgcMnl5QUHdOzSN2w,3550
9
- py2dag-0.1.10.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
10
- py2dag-0.1.10.dist-info/entry_points.txt,sha256=Q0SHexJJ0z1te4AYL1xTZogx5FrxCCE1ZJ5qntkFMZs,42
11
- py2dag-0.1.10.dist-info/RECORD,,
7
+ py2dag-0.1.12.dist-info/LICENSE,sha256=3Qee1EPwej_nusovTbyIQ8LvD2rXHdM0c6LNwk_D8Kc,1067
8
+ py2dag-0.1.12.dist-info/METADATA,sha256=o7jsa9S5EDuqMgvfYBgQ4sBr3kAgVSSrduP08ou27MU,3550
9
+ py2dag-0.1.12.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
10
+ py2dag-0.1.12.dist-info/entry_points.txt,sha256=Q0SHexJJ0z1te4AYL1xTZogx5FrxCCE1ZJ5qntkFMZs,42
11
+ py2dag-0.1.12.dist-info/RECORD,,