forked from Rust-related/RustPython
Update from CPython v3.10.9
This commit is contained in:
committed by
Jeong YunWon
parent
a0c34dab54
commit
53d0f41ba5
12
Lib/ast.py
vendored
12
Lib/ast.py
vendored
@@ -53,10 +53,12 @@ def parse(source, filename='<unknown>', mode='exec', *,
|
||||
|
||||
def literal_eval(node_or_string):
|
||||
"""
|
||||
Safely evaluate an expression node or a string containing a Python
|
||||
Evaluate an expression node or a string containing only a Python
|
||||
expression. The string or node provided may only consist of the following
|
||||
Python literal structures: strings, bytes, numbers, tuples, lists, dicts,
|
||||
sets, booleans, and None.
|
||||
|
||||
Caution: A complex expression can overflow the C stack and cause a crash.
|
||||
"""
|
||||
if isinstance(node_or_string, str):
|
||||
node_or_string = parse(node_or_string.lstrip(" \t"), mode='eval')
|
||||
@@ -234,6 +236,12 @@ def increment_lineno(node, n=1):
|
||||
location in a file.
|
||||
"""
|
||||
for child in walk(node):
|
||||
# TypeIgnore is a special case where lineno is not an attribute
|
||||
# but rather a field of the node itself.
|
||||
if isinstance(child, TypeIgnore):
|
||||
child.lineno = getattr(child, 'lineno', 0) + n
|
||||
continue
|
||||
|
||||
if 'lineno' in child._attributes:
|
||||
child.lineno = getattr(child, 'lineno', 0) + n
|
||||
if (
|
||||
@@ -849,7 +857,7 @@ class _Unparser(NodeVisitor):
|
||||
|
||||
def visit_ImportFrom(self, node):
|
||||
self.fill("from ")
|
||||
self.write("." * node.level)
|
||||
self.write("." * (node.level or 0))
|
||||
if node.module:
|
||||
self.write(node.module)
|
||||
self.write(" import ")
|
||||
|
||||
9
Lib/dataclasses.py
vendored
9
Lib/dataclasses.py
vendored
@@ -411,13 +411,11 @@ def _recursive_repr(user_function):
|
||||
|
||||
def _create_fn(name, args, body, *, globals=None, locals=None,
|
||||
return_type=MISSING):
|
||||
# Note that we mutate locals when exec() is called. Caller
|
||||
# beware! The only callers are internal to this module, so no
|
||||
# Note that we may mutate locals. Callers beware!
|
||||
# The only callers are internal to this module, so no
|
||||
# worries about external callers.
|
||||
if locals is None:
|
||||
locals = {}
|
||||
if 'BUILTINS' not in locals:
|
||||
locals['BUILTINS'] = builtins
|
||||
return_annotation = ''
|
||||
if return_type is not MISSING:
|
||||
locals['_return_type'] = return_type
|
||||
@@ -443,7 +441,7 @@ def _field_assign(frozen, name, value, self_name):
|
||||
# self_name is what "self" is called in this function: don't
|
||||
# hard-code "self", since that might be a field name.
|
||||
if frozen:
|
||||
return f'BUILTINS.object.__setattr__({self_name},{name!r},{value})'
|
||||
return f'__dataclass_builtins_object__.__setattr__({self_name},{name!r},{value})'
|
||||
return f'{self_name}.{name}={value}'
|
||||
|
||||
|
||||
@@ -550,6 +548,7 @@ def _init_fn(fields, std_fields, kw_only_fields, frozen, has_post_init,
|
||||
locals.update({
|
||||
'MISSING': MISSING,
|
||||
'_HAS_DEFAULT_FACTORY': _HAS_DEFAULT_FACTORY,
|
||||
'__dataclass_builtins_object__': object,
|
||||
})
|
||||
|
||||
body_lines = []
|
||||
|
||||
Reference in New Issue
Block a user