11import ast
22import builtins
33import linecache
4- from collections .abc import MutableMapping
54from types import CodeType
65from typing import Any
76
87from effectful .ops .syntax import ObjectInterpretation , defop , implements
98
109
1110@defop
12- def parse (source : str , filename : str ) -> ast .AST :
11+ def parse (source : str , filename : str ) -> ast .Module :
1312 """
1413 Parse source text into an AST.
1514
@@ -22,7 +21,7 @@ def parse(source: str, filename: str) -> ast.AST:
2221
2322
2423@defop
25- def compile (module : ast .AST , filename : str ) -> CodeType :
24+ def compile (module : ast .Module , filename : str ) -> CodeType :
2625 """
2726 Compile an AST into a Python code object.
2827
@@ -37,7 +36,7 @@ def compile(module: ast.AST, filename: str) -> CodeType:
3736@defop
3837def exec (
3938 bytecode : CodeType ,
40- env : MutableMapping [str , Any ],
39+ env : dict [str , Any ],
4140) -> None :
4241 """
4342 Execute a compiled code object.
@@ -53,7 +52,7 @@ class UnsafeEvalProvider(ObjectInterpretation):
5352 by shelling out to python *without* any further checks. Only use for testing."""
5453
5554 @implements (parse )
56- def parse (self , source : str , filename : str ) -> ast .AST :
55+ def parse (self , source : str , filename : str ) -> ast .Module :
5756 # Cache source under `filename` so inspect.getsource() can retrieve it later.
5857 # inspect uses f.__code__.co_filename -> linecache.getlines(filename)
5958 linecache .cache [filename ] = (
@@ -66,14 +65,14 @@ def parse(self, source: str, filename: str) -> ast.AST:
6665 return ast .parse (source , filename = filename , mode = "exec" )
6766
6867 @implements (compile )
69- def compile (self , module : ast .AST , filename : str , * rags ) -> CodeType :
68+ def compile (self , module : ast .Module , filename : str , * rags ) -> CodeType :
7069 return builtins .compile (module , filename , "exec" )
7170
7271 @implements (exec )
7372 def exec (
7473 self ,
7574 bytecode : CodeType ,
76- env : MutableMapping [str , Any ],
75+ env : dict [str , Any ],
7776 ) -> None :
7877 # Ensure builtins exist in the execution environment.
7978 env .setdefault ("__builtins__" , __builtins__ )
0 commit comments