mirror of
https://github.com/python/cpython.git
synced 2025-12-08 06:10:17 +00:00
[3.14] gh-132775: Expand the Capability of Interpreter.call() (gh-134933)
It now supports most callables, full args, and return values.
(cherry picked from commit 52deabe, AKA gh-133484)
Co-authored-by: Eric Snow ericsnowcurrently@gmail.com
This commit is contained in:
parent
69536093de
commit
d45d053267
11 changed files with 32773 additions and 31776 deletions
|
|
@ -701,6 +701,26 @@ def test_local_kinds(self):
|
|||
'checks': CO_FAST_LOCAL,
|
||||
'res': CO_FAST_LOCAL,
|
||||
},
|
||||
defs.spam_full_args: {
|
||||
'a': POSONLY,
|
||||
'b': POSONLY,
|
||||
'c': POSORKW,
|
||||
'd': POSORKW,
|
||||
'e': KWONLY,
|
||||
'f': KWONLY,
|
||||
'args': VARARGS,
|
||||
'kwargs': VARKWARGS,
|
||||
},
|
||||
defs.spam_full_args_with_defaults: {
|
||||
'a': POSONLY,
|
||||
'b': POSONLY,
|
||||
'c': POSORKW,
|
||||
'd': POSORKW,
|
||||
'e': KWONLY,
|
||||
'f': KWONLY,
|
||||
'args': VARARGS,
|
||||
'kwargs': VARKWARGS,
|
||||
},
|
||||
defs.spam_args_attrs_and_builtins: {
|
||||
'a': POSONLY,
|
||||
'b': POSONLY,
|
||||
|
|
@ -714,6 +734,7 @@ def test_local_kinds(self):
|
|||
defs.spam_returns_arg: {
|
||||
'x': POSORKW,
|
||||
},
|
||||
defs.spam_raises: {},
|
||||
defs.spam_with_inner_not_closure: {
|
||||
'eggs': CO_FAST_LOCAL,
|
||||
},
|
||||
|
|
@ -934,6 +955,20 @@ def new_var_counts(*,
|
|||
purelocals=5,
|
||||
globalvars=6,
|
||||
),
|
||||
defs.spam_full_args: new_var_counts(
|
||||
posonly=2,
|
||||
posorkw=2,
|
||||
kwonly=2,
|
||||
varargs=1,
|
||||
varkwargs=1,
|
||||
),
|
||||
defs.spam_full_args_with_defaults: new_var_counts(
|
||||
posonly=2,
|
||||
posorkw=2,
|
||||
kwonly=2,
|
||||
varargs=1,
|
||||
varkwargs=1,
|
||||
),
|
||||
defs.spam_args_attrs_and_builtins: new_var_counts(
|
||||
posonly=2,
|
||||
posorkw=2,
|
||||
|
|
@ -945,6 +980,9 @@ def new_var_counts(*,
|
|||
defs.spam_returns_arg: new_var_counts(
|
||||
posorkw=1,
|
||||
),
|
||||
defs.spam_raises: new_var_counts(
|
||||
globalvars=1,
|
||||
),
|
||||
defs.spam_with_inner_not_closure: new_var_counts(
|
||||
purelocals=1,
|
||||
),
|
||||
|
|
@ -1097,10 +1135,16 @@ def new_var_counts(*,
|
|||
def test_stateless(self):
|
||||
self.maxDiff = None
|
||||
|
||||
STATELESS_FUNCTIONS = [
|
||||
*defs.STATELESS_FUNCTIONS,
|
||||
# stateless with defaults
|
||||
defs.spam_full_args_with_defaults,
|
||||
]
|
||||
|
||||
for func in defs.STATELESS_CODE:
|
||||
with self.subTest((func, '(code)')):
|
||||
_testinternalcapi.verify_stateless_code(func.__code__)
|
||||
for func in defs.STATELESS_FUNCTIONS:
|
||||
for func in STATELESS_FUNCTIONS:
|
||||
with self.subTest((func, '(func)')):
|
||||
_testinternalcapi.verify_stateless_code(func)
|
||||
|
||||
|
|
@ -1110,7 +1154,7 @@ def test_stateless(self):
|
|||
with self.assertRaises(Exception):
|
||||
_testinternalcapi.verify_stateless_code(func.__code__)
|
||||
|
||||
if func not in defs.STATELESS_FUNCTIONS:
|
||||
if func not in STATELESS_FUNCTIONS:
|
||||
with self.subTest((func, '(func)')):
|
||||
with self.assertRaises(Exception):
|
||||
_testinternalcapi.verify_stateless_code(func)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue