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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions