11import ast
22import warnings
3+ from ast import Expression
4+ from ast import Interactive
5+ from ast import Module
6+ from ast import NodeTransformer
37from collections import namedtuple
48from os import PathLike
59from typing import Any
2630
2731
2832def _compile_restricted_mode (
29- source : str | ReadableBuffer | ast . Module | ast . Expression | ast . Interactive ,
33+ source : str | ReadableBuffer | Module | Expression | Interactive ,
3034 filename : str | ReadableBuffer | PathLike [Any ] = '<string>' ,
3135 mode : Literal ["exec" , "eval" , "single" ] = "exec" ,
3236 flags : int = 0 ,
3337 dont_inherit : bool = False ,
34- policy : ast .NodeTransformer = RestrictingNodeTransformer ) -> CompileResult :
38+ policy : NodeTransformer = RestrictingNodeTransformer ,
39+ ) -> CompileResult :
3540
3641 if not IS_CPYTHON :
3742 warnings .warn_explicit (
@@ -47,13 +52,13 @@ def _compile_restricted_mode(
4752 dont_inherit = dont_inherit )
4853 elif issubclass (policy , RestrictingNodeTransformer ):
4954 c_ast = None
50- allowed_source_types = [str , ast . Module ]
55+ allowed_source_types = [str , Module ]
5156 if not issubclass (type (source ), tuple (allowed_source_types )):
5257 raise TypeError ('Not allowed source type: '
5358 '"{0.__class__.__name__}".' .format (source ))
5459 c_ast = None
5560 # workaround for pypy issue https://bitbucket.org/pypy/pypy/issues/2552
56- if isinstance (source , ast . Module ):
61+ if isinstance (source , Module ):
5762 c_ast = source
5863 else :
5964 try :
@@ -86,11 +91,12 @@ def _compile_restricted_mode(
8691
8792
8893def compile_restricted_exec (
89- source : str | ReadableBuffer | ast . Module | ast . Expression | ast . Interactive ,
94+ source : str | ReadableBuffer | Module | Expression | Interactive ,
9095 filename : str | ReadableBuffer | PathLike [Any ] = '<string>' ,
9196 flags : int = 0 ,
9297 dont_inherit : bool = False ,
93- policy : ast .NodeTransformer = RestrictingNodeTransformer ) -> CompileResult :
98+ policy : NodeTransformer = RestrictingNodeTransformer ,
99+ ) -> CompileResult :
94100 """Compile restricted for the mode `exec`."""
95101 return _compile_restricted_mode (
96102 source ,
@@ -102,11 +108,12 @@ def compile_restricted_exec(
102108
103109
104110def compile_restricted_eval (
105- source : str | ReadableBuffer | ast . Module | ast . Expression | ast . Interactive ,
111+ source : str | ReadableBuffer | Module | Expression | Interactive ,
106112 filename : str | ReadableBuffer | PathLike [Any ] = '<string>' ,
107113 flags : int = 0 ,
108114 dont_inherit : bool = False ,
109- policy : ast .NodeTransformer = RestrictingNodeTransformer ) -> CompileResult :
115+ policy : NodeTransformer = RestrictingNodeTransformer ,
116+ ) -> CompileResult :
110117 """Compile restricted for the mode `eval`."""
111118 return _compile_restricted_mode (
112119 source ,
@@ -118,11 +125,12 @@ def compile_restricted_eval(
118125
119126
120127def compile_restricted_single (
121- source : str | ReadableBuffer | ast . Module | ast . Expression | ast . Interactive ,
128+ source : str | ReadableBuffer | Module | Expression | Interactive ,
122129 filename : str | ReadableBuffer | PathLike [Any ] = '<string>' ,
123130 flags : int = 0 ,
124131 dont_inherit : bool = False ,
125- policy : ast .NodeTransformer = RestrictingNodeTransformer ) -> CompileResult :
132+ policy : NodeTransformer = RestrictingNodeTransformer ,
133+ ) -> CompileResult :
126134 """Compile restricted for the mode `single`."""
127135 return _compile_restricted_mode (
128136 source ,
@@ -141,7 +149,8 @@ def compile_restricted_function(
141149 globalize = None , # List of globals (e.g. ['here', 'context', ...])
142150 flags : int = 0 ,
143151 dont_inherit : bool = False ,
144- policy : ast .NodeTransformer = RestrictingNodeTransformer ) -> CompileResult :
152+ policy : ast .NodeTransformer = RestrictingNodeTransformer ,
153+ ) -> CompileResult :
145154 """Compile a restricted code object for a function.
146155
147156 Documentation see:
@@ -189,12 +198,13 @@ def compile_restricted_function(
189198
190199
191200def compile_restricted (
192- source : str | ReadableBuffer | ast .Module | ast .Expression | ast .Interactive ,
193- filename : str | ReadableBuffer | PathLike [Any ] = '<unknown>' ,
194- mode : str = 'exec' ,
195- flags : int = 0 ,
196- dont_inherit : bool = False ,
197- policy : ast .NodeTransformer = RestrictingNodeTransformer ) -> CompileResult :
201+ source : str | ReadableBuffer | Module | Expression | Interactive ,
202+ filename : str | ReadableBuffer | PathLike [Any ] = '<unknown>' ,
203+ mode : str = 'exec' ,
204+ flags : int = 0 ,
205+ dont_inherit : bool = False ,
206+ policy : NodeTransformer = RestrictingNodeTransformer ,
207+ ) -> CompileResult :
198208 """Replacement for the built-in compile() function.
199209
200210 policy ... `ast.NodeTransformer` class defining the restrictions.
0 commit comments