Skip to content

context manager methods (__enter__ and __exit__) raise a SyntaxError #230

@germanptr

Description

@germanptr

BUG/PROBLEM REPORT (OR OTHER COMMON ISSUE)

If this ticket is accepted as a bug or feature request, I volunteer to work on it (once contributor agreement is approved).

What I did:

I tried to create a context manager in restricted python, here is the code:

from RestrictedPython import compile_restricted
source_code = """
class example:
    def __enter__(self):
        return self

    def __exit__(self, exc_type, exc_value, exc_traceback):
        pass
"""
compile_restricted(source_code, '<inline>', 'exec')

What I expect to happen:

I expected to have a context manager that I could use in a with statement

What actually happened:

I get the following error:

SyntaxError: ('Line 3: "__enter__" is an invalid variable name because it starts with "_"', 'Line 6: "__exit__" is an invalid variable name because it starts with "_"')

These methods (__enter__ and __exit__) are missing from transformer.ALLOWED_FUNC_NAMES

What version of Python and Zope/Addons I am using:

Python 3.8.2
RestrictedPython 5.2
macOS Monterey 12.5.1

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions