.. image:: https://github.com/zopefoundation/RestrictedPython/actions/workflows/tests.yml/badge.svg
:target: https://github.com/zopefoundation/RestrictedPython/actions/workflows/tests.yml
.. image:: https://coveralls.io/repos/github/zopefoundation/RestrictedPython/badge.svg?branch=master
:target: https://coveralls.io/github/zopefoundation/RestrictedPython?branch=master
.. image:: https://readthedocs.org/projects/restrictedpython/badge/
:target: https://restrictedpython.readthedocs.org/
:alt: Documentation Status
.. image:: https://img.shields.io/pypi/v/RestrictedPython.svg
:target: https://pypi.org/project/RestrictedPython/
:alt: Current version on PyPI
.. image:: https://img.shields.io/pypi/pyversions/RestrictedPython.svg
:target: https://pypi.org/project/RestrictedPython/
:alt: Supported Python versions
.. image:: https://github.com/zopefoundation/RestrictedPython/raw/master/docs/logo.jpg
================
RestrictedPython
================
RestrictedPython is a tool that helps to define a subset of the Python language which allows to provide a program input into a trusted environment.
RestrictedPython is not a sandbox system or a secured environment, but it helps to define a trusted environment and execute untrusted code inside of it.
.. warning::
RestrictedPython only supports CPython. It does _not_ support PyPy and other Python implementations as it cannot provide its restrictions there.
For full documentation please see http://restrictedpython.readthedocs.io/.
Example
=======
To give a basic understanding what RestrictedPython does here two examples:
An unproblematic code example
-----------------------------
Python allows you to execute a large set of commands.
This would not harm any system.
.. code-block:: pycon
>>> from RestrictedPython import compile_restricted
>>> from RestrictedPython import safe_globals
>>>
>>> source_code = """
... def example():
... return 'Hello World!'
... """
>>>
>>> loc = {}
>>> byte_code = compile_restricted(source_code, '<inline>', 'exec')
>>> exec(byte_code, safe_globals, loc)
>>>
>>> loc['example']()
'Hello World!'
Problematic code example
------------------------
This example directly executed in Python could harm your system.
.. code-block:: pycon
>>> from RestrictedPython import compile_restricted
>>> from RestrictedPython import safe_globals
>>>
>>> source_code = """
... import os
...
... os.listdir('/')
... """
>>> byte_code = compile_restricted(source_code, '<inline>', 'exec')
>>> exec(byte_code, safe_globals, {})
Traceback (most recent call last):
ImportError: __import__ not found
Contributing to RestrictedPython
--------------------------------
If you want to help maintain RestrictedPython and contribute, please refer to
the documentation `Contributing page
<https://restrictedpython.readthedocs.io/en/latest/contributing/index.html>`_.
Changes
=======
7.4 (2024-10-09)
----------------
- Allow to use the package with Python 3.13.
- Drop support for Python 3.7.
- Provide new function ``RestrictedPython.Guards.safer_getattr_raise``.
It is similar to ``safer_getattr`` but handles its parameter
``default`` like ``getattr``, i.e. it raises ``AttributeError``
if the attribute lookup fails and this parameter is not provided,
fixes `#287 <https://github.com/zopefoundation/RestrictedPython/issues/287>`_.
7.3 (2024-09-30)
----------------
- Increase the safety level of ``safer_getattr`` allowing applications to use
it as ``getattr`` implementation. Such use should now follow the same policy
and give the same level of protection as direct attribute access in an
environment based on ``RestrictedPython``'s ``safe_builtints``.
- Prevent information leakage via ``AttributeError.obj``
and the ``string`` module. (CVE-2024-47532)
7.2 (2024-08-02)
----------------
- Remove unneeded setuptools fossils that may cause installation problems
with recent setuptools versions.
- Add support for single mode statements / execution.
- Fix a potential breakout capability in the provided ``safer_getattr`` method
that is part of the ``safer_builtins``.
7.1 (2024-03-14)
----------------
- Add support for the matmul (``@``) operator.
7.0 (2023-11-17)
----------------
Backwards incompatible changes
++++++++++++++++++++++++++++++
- Drop support for Python 3.6.
Features
++++++++
- Officially support Python 3.12.
Fixes
+++++
- Prevent DeprecationWarnings from ``ast.Str`` and ``ast.Num`` on Python 3.12
- Forbid using some attributes providing access to restricted Python internals.
(CVE-2023-37271)
- Fix information disclosure problems through Python's "format" functionality
(``format`` and ``format_map`` methods on ``str`` and its instances,
``string.Formatter``). (CVE-2023-41039)
6.0 (2022-11-03)
----------------
Backwards incompatible changes
++++++++++++++++++++++++++++++
- Drop support for Python 2.7 and 3.5.
Features
++++++++
- Officially support Python 3.11.
- Allow to use the Python 3.11 feature of exception groups and except\*
(PEP 654).
5.2 (2021-11-19)
----------------
- Document that ``__name__`` is needed to define classes.
- Add support for Python 3.10. Auditing the Python 3.10 change log did not
reveal any changes which require actions in RestrictedPython.
- Avoid deprecation warnings when using Python 3.8+.
(`#192 <https://github.com/zopefoundation/RestrictedPython/issues/192>`_)
5.1 (2020-10-07)
----------------
Features
++++++++
- Add support for (Python 3.8+) assignment expressions (i.e. the ``:=`` operator)
- Add support for Python 3.9 after checking the security implications of the
syntax changes made in that version.
- Add support for the ``bytes`` and ``sorted`` builtins
(`#186 <https://github.com/zopefoundation/RestrictedPython/issues/186>`_)
Documentation
+++++++++++++
- Document parameter ``mode`` for the ``compile_restricted`` functions
(`#157 <https://github.com/zopefoundation/RestrictedPython/issues/157>`_)
- Fix documentation for ``compile_restricted_function``
(`#158 <https://github.com/zopefoundation/RestrictedPython/issues/158>`_)
Fixes
+++++
- Fix ``compile_restricted_function`` with SyntaxErrors that have no text
(`#181 <https://github.com/zopefoundation/RestrictedPython/issues/181>`_)
- Drop install dependency on ``setuptools``.
(`#189 <https://github.com/zopefoundation/RestrictedPython/issues/189>`_)
5.0 (2019-09-03)
----------------
Breaking changes
++++++++++++++++
- Revert the allowance of the ``...`` (Ellipsis) statement, as of 4.0. It is
not needed to support Python 3.8.
The security implications of the Ellipsis Statement is not 100 % clear and is
not checked. ``...`` (Ellipsis) is disallowed again.
Features
++++++++
- Add support for f-strings in Python 3.6+.
(`#123 <https://github.com/zopefoundation/RestrictedPython/issues/123>`_)
4.0 (2019-05-10)
----------------
Changes since 3.6.0:
Breaking changes
++++++++++++++++
- The ``compile_restricted*`` functions now return a
``namedtuple CompileResult`` instead of a simple ``tuple``.
- Drop the old implementation of version 3.x: `RCompile.py`,
`SelectCompiler.py`, `MutatingWorker.py`, `RestrictionMutator.py` and
`tests/verify.py`.
- Drop support for long-deprecated ``sets`` module.
Security related issues
+++++++++++++++++++++++
- RestrictedPython now ships with a default implementation for
``_getattr_`` which prevents from using the ``format()`` method on
str/unicode as it is not safe, see:
http://lucumr.pocoo.org/2016/12/29/careful-with-str-format/
**Caution:** If you do not already have secured the access to this
``format()`` method in your ``_getattr_`` implementation use
``RestrictedPython.Guards.safer_getattr()`` in your implementation to
benefit from this fix.
Features
++++++++
- Mostly complete rewrite based on Python AST module.
[loechel (Alexander Loechel), icemac (Michael Howitz),
stephan-hof (Stephan Hofmockel), tlotze (Thomas Lotze)]
- Add support for Python 3.5, 3.6, 3.7.
- Add preliminary support for Python 3.8. as of 3.8.0a3 is released.
- Warn when using another Python implementation than CPython as it is not safe
to use RestrictedPython with other versions than CPyton.
See https://bitbucket.org/pypy/pypy/issues/2653 for PyPy.
- Allow the ``...`` (Ellipsis) statement. It is needed to support Python 3.8.
- Allow `yield` and `yield from` statements.
Generator functions would now work in RestrictedPython.
- Allow the following magic methods to be defined on classes.
(`#104 <https://github.com/zopefoundation/RestrictedPython/issues/104>`_)
They cannot be called directly but by the built-in way to use them (e. g.
class instantiation, or comparison):
+ ``__init__``
+ ``__contains__``
+ ``__lt__``
+ ``__le__``
+ ``__eq__``
+ ``__ne__``
+ ``__gt__``
+ ``__ge__``
- Imports like ``from a import *`` (so called star imports) are now forbidden
as they allow to import names starting with an underscore which could
override protected build-ins.
(`#102 <https://github.com/zopefoundation/RestrictedPython/issues/102>`_)
- Allow to use list comprehensions in the default implementation of
``RestrictionCapableEval.eval()``.
- Switch to pytest as test runner.
- Bring test coverage to 100 %.
Bug fixes
+++++++++
- Improve `.Guards.safer_getattr` to prevent accessing names starting with
underscore.
(`#142 <https://github.com/zopefoundation/RestrictedPython/issues/142>`_)
3.6.0 (2010-07-09)
------------------
- Add name check for names assigned during imports using the
``from x import y`` format.
- Add test for name check when assigning an alias using multiple-context
``with`` statements in Python 2.7.
- Add tests for protection of the iterators for dict and set comprehensions
in Python 2.7.
3.6.0a1 (2010-06-05)
--------------------
- Remove support for ``DocumentTemplate.sequence`` - this is handled in the
DocumentTemplate package itself.
3.5.2 (2010-04-30)
------------------
- Remove a testing dependency on ``zope.testing``.
3.5.1 (2009-03-17)
------------------
- Add tests for ``Utilities`` module.
- Filter DeprecationWarnings when importing Python's ``sets`` module.
3.5.0 (2009-02-09)
------------------
- Drop legacy support for Python 2.1 / 2.2 (``__future__`` imports
of ``nested_scopes`` / ``generators``.).
3.4.3 (2008-10-26)
------------------
- Fix deprecation warning: ``with`` is now a reserved keyword on
Python 2.6. That means RestrictedPython should run on Python 2.6
now. Thanks to Ranjith Kannikara, GSoC Student for the patch.
- Add tests for ternary if expression and for ``with`` keyword and
context managers.
3.4.2 (2007-07-28)
------------------
- Changed homepage URL to the PyPI site
- Improve ``README.txt``.
3.4.1 (2007-06-23)
------------------
- Fix http://www.zope.org/Collectors/Zope/2295: Bare conditional in
a Zope 2 PythonScript followed by a comment causes SyntaxError.
3.4.0 (2007-06-04)
------------------
- RestrictedPython now has its own release cycle as a separate project.
- Synchronized with RestrictedPython from Zope 2 tree.
3.2.0 (2006-01-05)
------------------
- Corresponds to the verison of the RestrictedPython package shipped
as part of the Zope 3.2.0 release.
- No changes from 3.1.0.
3.1.0 (2005-10-03)
------------------
- Corresponds to the verison of the RestrictedPython package shipped
as part of the Zope 3.1.0 release.
- Remove unused fossil module, ``SafeMapping``.
- Replaced use of deprecated ``whrandom`` module with ``random`` (aliased
to ``whrandom`` for backward compatibility).
3.0.0 (2004-11-07)
------------------
- Corresponds to the verison of the RestrictedPython package shipped
as part of the Zope X3.0.0 release.
Raw data
{
"_id": null,
"home_page": "https://github.com/zopefoundation/RestrictedPython",
"name": "RestrictedPython",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.14,>=3.8",
"maintainer_email": null,
"keywords": "restricted execution security untrusted code",
"author": "Zope Foundation and Contributors",
"author_email": "zope-dev@zope.dev",
"download_url": "https://files.pythonhosted.org/packages/46/3d/23c87d84ec1cf069b977244a9e9ce81d7ac778768b639b66421090391f5f/restrictedpython-7.4.tar.gz",
"platform": null,
"description": ".. image:: https://github.com/zopefoundation/RestrictedPython/actions/workflows/tests.yml/badge.svg\n :target: https://github.com/zopefoundation/RestrictedPython/actions/workflows/tests.yml\n\n.. image:: https://coveralls.io/repos/github/zopefoundation/RestrictedPython/badge.svg?branch=master\n :target: https://coveralls.io/github/zopefoundation/RestrictedPython?branch=master\n\n.. image:: https://readthedocs.org/projects/restrictedpython/badge/\n :target: https://restrictedpython.readthedocs.org/\n :alt: Documentation Status\n\n.. image:: https://img.shields.io/pypi/v/RestrictedPython.svg\n :target: https://pypi.org/project/RestrictedPython/\n :alt: Current version on PyPI\n\n.. image:: https://img.shields.io/pypi/pyversions/RestrictedPython.svg\n :target: https://pypi.org/project/RestrictedPython/\n :alt: Supported Python versions\n\n.. image:: https://github.com/zopefoundation/RestrictedPython/raw/master/docs/logo.jpg\n\n================\nRestrictedPython\n================\n\nRestrictedPython is a tool that helps to define a subset of the Python language which allows to provide a program input into a trusted environment.\nRestrictedPython is not a sandbox system or a secured environment, but it helps to define a trusted environment and execute untrusted code inside of it.\n\n.. warning::\n\n RestrictedPython only supports CPython. It does _not_ support PyPy and other Python implementations as it cannot provide its restrictions there.\n\nFor full documentation please see http://restrictedpython.readthedocs.io/.\n\nExample\n=======\n\nTo give a basic understanding what RestrictedPython does here two examples:\n\nAn unproblematic code example\n-----------------------------\n\nPython allows you to execute a large set of commands.\nThis would not harm any system.\n\n.. code-block:: pycon\n\n >>> from RestrictedPython import compile_restricted\n >>> from RestrictedPython import safe_globals\n >>>\n >>> source_code = \"\"\"\n ... def example():\n ... return 'Hello World!'\n ... \"\"\"\n >>>\n >>> loc = {}\n >>> byte_code = compile_restricted(source_code, '<inline>', 'exec')\n >>> exec(byte_code, safe_globals, loc)\n >>>\n >>> loc['example']()\n 'Hello World!'\n\nProblematic code example\n------------------------\n\nThis example directly executed in Python could harm your system.\n\n.. code-block:: pycon\n\n >>> from RestrictedPython import compile_restricted\n >>> from RestrictedPython import safe_globals\n >>>\n >>> source_code = \"\"\"\n ... import os\n ...\n ... os.listdir('/')\n ... \"\"\"\n >>> byte_code = compile_restricted(source_code, '<inline>', 'exec')\n >>> exec(byte_code, safe_globals, {})\n Traceback (most recent call last):\n ImportError: __import__ not found\n\nContributing to RestrictedPython\n--------------------------------\n\nIf you want to help maintain RestrictedPython and contribute, please refer to\nthe documentation `Contributing page\n<https://restrictedpython.readthedocs.io/en/latest/contributing/index.html>`_.\n\nChanges\n=======\n\n7.4 (2024-10-09)\n----------------\n\n- Allow to use the package with Python 3.13.\n\n- Drop support for Python 3.7.\n\n- Provide new function ``RestrictedPython.Guards.safer_getattr_raise``.\n It is similar to ``safer_getattr`` but handles its parameter\n ``default`` like ``getattr``, i.e. it raises ``AttributeError``\n if the attribute lookup fails and this parameter is not provided,\n fixes `#287 <https://github.com/zopefoundation/RestrictedPython/issues/287>`_.\n\n\n7.3 (2024-09-30)\n----------------\n\n- Increase the safety level of ``safer_getattr`` allowing applications to use\n it as ``getattr`` implementation. Such use should now follow the same policy\n and give the same level of protection as direct attribute access in an\n environment based on ``RestrictedPython``'s ``safe_builtints``.\n- Prevent information leakage via ``AttributeError.obj``\n and the ``string`` module. (CVE-2024-47532)\n\n\n7.2 (2024-08-02)\n----------------\n\n- Remove unneeded setuptools fossils that may cause installation problems\n with recent setuptools versions.\n- Add support for single mode statements / execution.\n- Fix a potential breakout capability in the provided ``safer_getattr`` method\n that is part of the ``safer_builtins``.\n\n\n7.1 (2024-03-14)\n----------------\n\n- Add support for the matmul (``@``) operator.\n\n\n7.0 (2023-11-17)\n----------------\n\nBackwards incompatible changes\n++++++++++++++++++++++++++++++\n\n- Drop support for Python 3.6.\n\nFeatures\n++++++++\n\n- Officially support Python 3.12.\n\nFixes\n+++++\n\n- Prevent DeprecationWarnings from ``ast.Str`` and ``ast.Num`` on Python 3.12\n\n- Forbid using some attributes providing access to restricted Python internals.\n (CVE-2023-37271)\n\n- Fix information disclosure problems through Python's \"format\" functionality\n (``format`` and ``format_map`` methods on ``str`` and its instances,\n ``string.Formatter``). (CVE-2023-41039)\n\n\n6.0 (2022-11-03)\n----------------\n\nBackwards incompatible changes\n++++++++++++++++++++++++++++++\n\n- Drop support for Python 2.7 and 3.5.\n\nFeatures\n++++++++\n\n- Officially support Python 3.11.\n\n- Allow to use the Python 3.11 feature of exception groups and except\\*\n (PEP 654).\n\n\n5.2 (2021-11-19)\n----------------\n\n- Document that ``__name__`` is needed to define classes.\n\n- Add support for Python 3.10. Auditing the Python 3.10 change log did not\n reveal any changes which require actions in RestrictedPython.\n\n- Avoid deprecation warnings when using Python 3.8+.\n (`#192 <https://github.com/zopefoundation/RestrictedPython/issues/192>`_)\n\n\n5.1 (2020-10-07)\n----------------\n\nFeatures\n++++++++\n\n- Add support for (Python 3.8+) assignment expressions (i.e. the ``:=`` operator)\n\n- Add support for Python 3.9 after checking the security implications of the\n syntax changes made in that version.\n\n- Add support for the ``bytes`` and ``sorted`` builtins\n (`#186 <https://github.com/zopefoundation/RestrictedPython/issues/186>`_)\n\nDocumentation\n+++++++++++++\n\n- Document parameter ``mode`` for the ``compile_restricted`` functions\n (`#157 <https://github.com/zopefoundation/RestrictedPython/issues/157>`_)\n\n- Fix documentation for ``compile_restricted_function``\n (`#158 <https://github.com/zopefoundation/RestrictedPython/issues/158>`_)\n\nFixes\n+++++\n\n- Fix ``compile_restricted_function`` with SyntaxErrors that have no text\n (`#181 <https://github.com/zopefoundation/RestrictedPython/issues/181>`_)\n\n- Drop install dependency on ``setuptools``.\n (`#189 <https://github.com/zopefoundation/RestrictedPython/issues/189>`_)\n\n\n5.0 (2019-09-03)\n----------------\n\nBreaking changes\n++++++++++++++++\n\n- Revert the allowance of the ``...`` (Ellipsis) statement, as of 4.0. It is\n not needed to support Python 3.8.\n The security implications of the Ellipsis Statement is not 100 % clear and is\n not checked. ``...`` (Ellipsis) is disallowed again.\n\nFeatures\n++++++++\n\n- Add support for f-strings in Python 3.6+.\n (`#123 <https://github.com/zopefoundation/RestrictedPython/issues/123>`_)\n\n\n4.0 (2019-05-10)\n----------------\n\nChanges since 3.6.0:\n\nBreaking changes\n++++++++++++++++\n\n- The ``compile_restricted*`` functions now return a\n ``namedtuple CompileResult`` instead of a simple ``tuple``.\n\n- Drop the old implementation of version 3.x: `RCompile.py`,\n `SelectCompiler.py`, `MutatingWorker.py`, `RestrictionMutator.py` and\n `tests/verify.py`.\n\n- Drop support for long-deprecated ``sets`` module.\n\nSecurity related issues\n+++++++++++++++++++++++\n\n- RestrictedPython now ships with a default implementation for\n ``_getattr_`` which prevents from using the ``format()`` method on\n str/unicode as it is not safe, see:\n http://lucumr.pocoo.org/2016/12/29/careful-with-str-format/\n\n **Caution:** If you do not already have secured the access to this\n ``format()`` method in your ``_getattr_`` implementation use\n ``RestrictedPython.Guards.safer_getattr()`` in your implementation to\n benefit from this fix.\n\nFeatures\n++++++++\n\n- Mostly complete rewrite based on Python AST module.\n [loechel (Alexander Loechel), icemac (Michael Howitz),\n stephan-hof (Stephan Hofmockel), tlotze (Thomas Lotze)]\n\n- Add support for Python 3.5, 3.6, 3.7.\n\n- Add preliminary support for Python 3.8. as of 3.8.0a3 is released.\n\n- Warn when using another Python implementation than CPython as it is not safe\n to use RestrictedPython with other versions than CPyton.\n See https://bitbucket.org/pypy/pypy/issues/2653 for PyPy.\n\n- Allow the ``...`` (Ellipsis) statement. It is needed to support Python 3.8.\n\n- Allow `yield` and `yield from` statements.\n Generator functions would now work in RestrictedPython.\n\n- Allow the following magic methods to be defined on classes.\n (`#104 <https://github.com/zopefoundation/RestrictedPython/issues/104>`_)\n They cannot be called directly but by the built-in way to use them (e. g.\n class instantiation, or comparison):\n\n + ``__init__``\n + ``__contains__``\n + ``__lt__``\n + ``__le__``\n + ``__eq__``\n + ``__ne__``\n + ``__gt__``\n + ``__ge__``\n\n- Imports like ``from a import *`` (so called star imports) are now forbidden\n as they allow to import names starting with an underscore which could\n override protected build-ins.\n (`#102 <https://github.com/zopefoundation/RestrictedPython/issues/102>`_)\n\n- Allow to use list comprehensions in the default implementation of\n ``RestrictionCapableEval.eval()``.\n\n- Switch to pytest as test runner.\n\n- Bring test coverage to 100 %.\n\nBug fixes\n+++++++++\n\n- Improve `.Guards.safer_getattr` to prevent accessing names starting with\n underscore.\n (`#142 <https://github.com/zopefoundation/RestrictedPython/issues/142>`_)\n\n\n3.6.0 (2010-07-09)\n------------------\n\n- Add name check for names assigned during imports using the\n ``from x import y`` format.\n\n- Add test for name check when assigning an alias using multiple-context\n ``with`` statements in Python 2.7.\n\n- Add tests for protection of the iterators for dict and set comprehensions\n in Python 2.7.\n\n3.6.0a1 (2010-06-05)\n--------------------\n\n- Remove support for ``DocumentTemplate.sequence`` - this is handled in the\n DocumentTemplate package itself.\n\n3.5.2 (2010-04-30)\n------------------\n\n- Remove a testing dependency on ``zope.testing``.\n\n3.5.1 (2009-03-17)\n------------------\n\n- Add tests for ``Utilities`` module.\n\n- Filter DeprecationWarnings when importing Python's ``sets`` module.\n\n3.5.0 (2009-02-09)\n------------------\n\n- Drop legacy support for Python 2.1 / 2.2 (``__future__`` imports\n of ``nested_scopes`` / ``generators``.).\n\n3.4.3 (2008-10-26)\n------------------\n\n- Fix deprecation warning: ``with`` is now a reserved keyword on\n Python 2.6. That means RestrictedPython should run on Python 2.6\n now. Thanks to Ranjith Kannikara, GSoC Student for the patch.\n\n- Add tests for ternary if expression and for ``with`` keyword and\n context managers.\n\n3.4.2 (2007-07-28)\n------------------\n\n- Changed homepage URL to the PyPI site\n\n- Improve ``README.txt``.\n\n3.4.1 (2007-06-23)\n------------------\n\n- Fix http://www.zope.org/Collectors/Zope/2295: Bare conditional in\n a Zope 2 PythonScript followed by a comment causes SyntaxError.\n\n3.4.0 (2007-06-04)\n------------------\n\n- RestrictedPython now has its own release cycle as a separate project.\n\n- Synchronized with RestrictedPython from Zope 2 tree.\n\n3.2.0 (2006-01-05)\n------------------\n\n- Corresponds to the verison of the RestrictedPython package shipped\n as part of the Zope 3.2.0 release.\n\n- No changes from 3.1.0.\n\n3.1.0 (2005-10-03)\n------------------\n\n- Corresponds to the verison of the RestrictedPython package shipped\n as part of the Zope 3.1.0 release.\n\n- Remove unused fossil module, ``SafeMapping``.\n\n- Replaced use of deprecated ``whrandom`` module with ``random`` (aliased\n to ``whrandom`` for backward compatibility).\n\n3.0.0 (2004-11-07)\n------------------\n\n- Corresponds to the verison of the RestrictedPython package shipped\n as part of the Zope X3.0.0 release.\n",
"bugtrack_url": null,
"license": "ZPL 2.1",
"summary": "RestrictedPython is a defined subset of the Python language which allows to provide a program input into a trusted environment.",
"version": "7.4",
"project_urls": {
"Documentation": "https://restrictedpython.readthedocs.io/",
"Homepage": "https://github.com/zopefoundation/RestrictedPython",
"Source": "https://github.com/zopefoundation/RestrictedPython",
"Tracker": "https://github.com/zopefoundation/RestrictedPython/issues"
},
"split_keywords": [
"restricted",
"execution",
"security",
"untrusted",
"code"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "5d5d5164e922d470ad58a4c8d34ed5c32e375fa9a71beaeefe0a67b096dcca2c",
"md5": "6b36beb71675b38700e339255cbae283",
"sha256": "f431c76f848f6f6d50ae21457cb503642db60889a273e4be439cf7ca4cbaf999"
},
"downloads": -1,
"filename": "RestrictedPython-7.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6b36beb71675b38700e339255cbae283",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.14,>=3.8",
"size": 27068,
"upload_time": "2024-10-09T16:42:25",
"upload_time_iso_8601": "2024-10-09T16:42:25.652544Z",
"url": "https://files.pythonhosted.org/packages/5d/5d/5164e922d470ad58a4c8d34ed5c32e375fa9a71beaeefe0a67b096dcca2c/RestrictedPython-7.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "463d23c87d84ec1cf069b977244a9e9ce81d7ac778768b639b66421090391f5f",
"md5": "5b0360adf15e17f519a162755e722405",
"sha256": "81b62924713dbd280917fceaecaf210fef7a49dddf1a08c8c214a3613fbeb425"
},
"downloads": -1,
"filename": "restrictedpython-7.4.tar.gz",
"has_sig": false,
"md5_digest": "5b0360adf15e17f519a162755e722405",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.14,>=3.8",
"size": 836694,
"upload_time": "2024-10-09T16:42:27",
"upload_time_iso_8601": "2024-10-09T16:42:27.994558Z",
"url": "https://files.pythonhosted.org/packages/46/3d/23c87d84ec1cf069b977244a9e9ce81d7ac778768b639b66421090391f5f/restrictedpython-7.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-09 16:42:27",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "zopefoundation",
"github_project": "RestrictedPython",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"tox": true,
"lcname": "restrictedpython"
}