From 4f3e1ae3e4da3804aac56a1abdd3f0c8cddf2f46 Mon Sep 17 00:00:00 2001 From: zedzhen <59135268+zedzhen@users.noreply.github.com> Date: Fri, 12 Jun 2026 15:24:49 +0300 Subject: [PATCH 1/3] update docs --- docs/usage/api.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/usage/api.rst b/docs/usage/api.rst index 8e8ca909..62256f1a 100644 --- a/docs/usage/api.rst +++ b/docs/usage/api.rst @@ -15,9 +15,9 @@ API overview :param flags: (optional). defaults to ``0`` :param dont_inherit: (optional). defaults to ``False`` :param policy: (optional). defaults to ``RestrictingNodeTransformer`` - :type source: str or unicode text or ``ast.AST`` - :type filename: str or unicode text - :type mode: str or unicode text + :type source: str or ``ast.Module`` + :type filename: str or bytes or os.PathLike[typing.Any] + :type mode: str :type flags: int :type dont_inherit: int :type policy: RestrictingNodeTransformer class From b4063645b71cf80480e0c5d706c4f4d2f25ee85b Mon Sep 17 00:00:00 2001 From: zedzhen <59135268+zedzhen@users.noreply.github.com> Date: Fri, 12 Jun 2026 15:26:41 +0300 Subject: [PATCH 2/3] update docs --- docs/usage/api.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage/api.rst b/docs/usage/api.rst index 62256f1a..6b81b6cf 100644 --- a/docs/usage/api.rst +++ b/docs/usage/api.rst @@ -15,7 +15,7 @@ API overview :param flags: (optional). defaults to ``0`` :param dont_inherit: (optional). defaults to ``False`` :param policy: (optional). defaults to ``RestrictingNodeTransformer`` - :type source: str or ``ast.Module`` + :type source: str or bytes or bytearray or ``ast.Module`` or ``ast.Expression`` or ``ast.Interactive`` :type filename: str or bytes or os.PathLike[typing.Any] :type mode: str :type flags: int From 6bdb28d4602b810e1a2f0be99ad78c4febb038e2 Mon Sep 17 00:00:00 2001 From: zedzhen <59135268+zedzhen@users.noreply.github.com> Date: Fri, 12 Jun 2026 15:31:24 +0300 Subject: [PATCH 3/3] add support bytes, bytearray, ast.Expression, ast.Interactive --- src/RestrictedPython/compile.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/RestrictedPython/compile.py b/src/RestrictedPython/compile.py index 3253b8c9..f1b78cc6 100644 --- a/src/RestrictedPython/compile.py +++ b/src/RestrictedPython/compile.py @@ -39,13 +39,19 @@ def _compile_restricted_mode( dont_inherit=dont_inherit) elif issubclass(policy, RestrictingNodeTransformer): c_ast = None - allowed_source_types = [str, ast.Module] + allowed_source_types = [ + str, + bytes, + bytearray, + ast.Module, + ast.Expression, + ast.Interactive] if not issubclass(type(source), tuple(allowed_source_types)): raise TypeError('Not allowed source type: ' '"{0.__class__.__name__}".'.format(source)) c_ast = None # workaround for pypy issue https://bitbucket.org/pypy/pypy/issues/2552 - if isinstance(source, ast.Module): + if isinstance(source, (ast.Module, ast.Expression, ast.Interactive)): c_ast = source else: try: