22import builtins
33import linecache
44import typing
5- from collections .abc import MutableMapping
65from types import CodeType
76from typing import Any
87
98from effectful .ops .syntax import ObjectInterpretation , defop , implements
109
1110
1211@defop
13- def parse (source : str , filename : str ) -> ast .AST :
12+ def parse (source : str , filename : str ) -> ast .Module :
1413 """
1514 Parse source text into an AST.
1615
@@ -23,7 +22,7 @@ def parse(source: str, filename: str) -> ast.AST:
2322
2423
2524@defop
26- def compile (module : ast .AST , filename : str ) -> CodeType :
25+ def compile (module : ast .Module , filename : str ) -> CodeType :
2726 """
2827 Compile an AST into a Python code object.
2928
@@ -38,7 +37,7 @@ def compile(module: ast.AST, filename: str) -> CodeType:
3837@defop
3938def exec (
4039 bytecode : CodeType ,
41- env : MutableMapping [str , Any ],
40+ env : dict [str , Any ],
4241) -> None :
4342 """
4443 Execute a compiled code object.
@@ -54,7 +53,7 @@ class UnsafeEvalProvider(ObjectInterpretation):
5453 by shelling out to python *without* any further checks. Only use for testing."""
5554
5655 @implements (parse )
57- def parse (self , source : str , filename : str ) -> ast .AST :
56+ def parse (self , source : str , filename : str ) -> ast .Module :
5857 # Cache source under `filename` so inspect.getsource() can retrieve it later.
5958 # inspect uses f.__code__.co_filename -> linecache.getlines(filename)
6059 linecache .cache [filename ] = (
0 commit comments