Commit 492f3fc2 authored by Georg Brandl's avatar Georg Brandl

Allow set literals in literal_eval().

parent e40ee509
...@@ -119,12 +119,15 @@ and classes for traversing abstract syntax trees: ...@@ -119,12 +119,15 @@ and classes for traversing abstract syntax trees:
Safely evaluate an expression node or a string containing a Python Safely evaluate an expression node or a string containing a Python
expression. The string or node provided may only consist of the following expression. The string or node provided may only consist of the following
Python literal structures: strings, numbers, tuples, lists, dicts, booleans, Python literal structures: strings, numbers, tuples, lists, dicts, sets,
and ``None``. booleans, and ``None``.
This can be used for safely evaluating strings containing Python expressions This can be used for safely evaluating strings containing Python expressions
from untrusted sources without the need to parse the values oneself. from untrusted sources without the need to parse the values oneself.
.. versionchanged:: 3.2
Now allows set literals.
.. function:: get_docstring(node, clean=True) .. function:: get_docstring(node, clean=True)
......
...@@ -58,6 +58,8 @@ def literal_eval(node_or_string): ...@@ -58,6 +58,8 @@ def literal_eval(node_or_string):
return tuple(map(_convert, node.elts)) return tuple(map(_convert, node.elts))
elif isinstance(node, List): elif isinstance(node, List):
return list(map(_convert, node.elts)) return list(map(_convert, node.elts))
elif isinstance(node, Set):
return set(map(_convert, node.elts))
elif isinstance(node, Dict): elif isinstance(node, Dict):
return dict((_convert(k), _convert(v)) for k, v return dict((_convert(k), _convert(v)) for k, v
in zip(node.keys, node.values)) in zip(node.keys, node.values))
......
...@@ -470,7 +470,9 @@ C-API ...@@ -470,7 +470,9 @@ C-API
Library Library
------- -------
- Issue #9164: Ensure that sysconfig handles duplicate -arch flags in CFLAGS - ``ast.literal_eval()`` now allows set literals.
- Issue #9164: Ensure that sysconfig handles duplicate -arch flags in CFLAGS.
- Issue #7646: The fnmatch pattern cache no longer grows without bound. - Issue #7646: The fnmatch pattern cache no longer grows without bound.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment