Skip to content

Commit 379fd85

Browse files
committed
Remove zero_arg case
1 parent b96c326 commit 379fd85

8 files changed

Lines changed: 4 additions & 235 deletions

File tree

Lib/test/test_clinic.py

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -2751,38 +2751,6 @@ class Foo "FooObject *" "Foo_Type"
27512751
self.assertTrue(func.vectorcall)
27522752
self.assertTrue(func.vectorcall_exact_only)
27532753

2754-
def test_vectorcall_zero_arg(self):
2755-
block = """
2756-
module m
2757-
class Foo "FooObject *" "Foo_Type"
2758-
@classmethod
2759-
@vectorcall zero_arg=_PyFoo_GetEmpty()
2760-
Foo.__new__
2761-
x: object = NULL
2762-
/
2763-
"""
2764-
func = self.parse_function(block, signatures_in_block=3,
2765-
function_index=2)
2766-
self.assertTrue(func.vectorcall)
2767-
self.assertFalse(func.vectorcall_exact_only)
2768-
self.assertEqual(func.vectorcall_zero_arg, '_PyFoo_GetEmpty()')
2769-
2770-
def test_vectorcall_zero_arg_with_exact(self):
2771-
block = """
2772-
module m
2773-
class Foo "FooObject *" "Foo_Type"
2774-
@classmethod
2775-
@vectorcall exact_only zero_arg=get_cached()
2776-
Foo.__new__
2777-
x: object = NULL
2778-
/
2779-
"""
2780-
func = self.parse_function(block, signatures_in_block=3,
2781-
function_index=2)
2782-
self.assertTrue(func.vectorcall)
2783-
self.assertTrue(func.vectorcall_exact_only)
2784-
self.assertEqual(func.vectorcall_zero_arg, 'get_cached()')
2785-
27862754
def test_vectorcall_invalid_kwarg(self):
27872755
err = "unknown argument"
27882756
block = """
@@ -4475,21 +4443,6 @@ def test_vc_new_exact_subclass(self):
44754443
self.assertIsInstance(obj, Sub)
44764444
self.assertIsInstance(obj, ac_tester.VcNewExact)
44774445

4478-
def test_vc_new_zeroarg_no_args(self):
4479-
# zero_arg returns Py_None when called with no arguments
4480-
result = ac_tester.VcNewZeroArg()
4481-
self.assertIs(result, None)
4482-
4483-
def test_vc_new_zeroarg_with_args(self):
4484-
self.assertIsInstance(ac_tester.VcNewZeroArg(1), ac_tester.VcNewZeroArg)
4485-
self.assertIsInstance(ac_tester.VcNewZeroArg(b=2), ac_tester.VcNewZeroArg)
4486-
self.assertIsInstance(ac_tester.VcNewZeroArg(1, b=2), ac_tester.VcNewZeroArg)
4487-
4488-
def test_vc_new_zeroarg_rejects_a_as_keyword(self):
4489-
# 'a' is positional-only
4490-
with self.assertRaises(TypeError):
4491-
ac_tester.VcNewZeroArg(a=1)
4492-
44934446

44944447
class LimitedCAPIOutputTests(unittest.TestCase):
44954448

Modules/_testclinic.c

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ custom_converter(PyObject *obj, custom_t *val)
2626
static PyTypeObject VcNew_Type;
2727
static PyTypeObject VcInit_Type;
2828
static PyTypeObject VcNewExact_Type;
29-
static PyTypeObject VcNewZeroArg_Type;
30-
3129
#include "clinic/_testclinic.c.h"
3230

3331

@@ -2409,35 +2407,6 @@ static PyTypeObject VcNewExact_Type = {
24092407
};
24102408

24112409

2412-
/* VcNewZeroArg: __new__ with zero_arg; returns Py_None when called with no args */
2413-
2414-
/*[clinic input]
2415-
class _testclinic.VcNewZeroArg "PyObject *" "&VcNewZeroArg_Type"
2416-
@classmethod
2417-
@vectorcall zero_arg=Py_NewRef(Py_None)
2418-
_testclinic.VcNewZeroArg.__new__ as vc_zeroarg_new
2419-
a: object = None
2420-
/
2421-
*
2422-
b: object = None
2423-
[clinic start generated code]*/
2424-
2425-
static PyObject *
2426-
vc_zeroarg_new_impl(PyTypeObject *type, PyObject *a, PyObject *b)
2427-
/*[clinic end generated code: output=6425b64d61c6317a input=f3d3ba860fc40034]*/
2428-
{
2429-
return type->tp_alloc(type, 0);
2430-
}
2431-
2432-
static PyTypeObject VcNewZeroArg_Type = {
2433-
PyVarObject_HEAD_INIT(NULL, 0)
2434-
.tp_name = "_testclinic.VcNewZeroArg",
2435-
.tp_basicsize = sizeof(PyObject),
2436-
.tp_flags = Py_TPFLAGS_DEFAULT,
2437-
.tp_new = vc_zeroarg_new,
2438-
.tp_vectorcall = vc_zeroarg_vectorcall,
2439-
};
2440-
24412410

24422411
/*[clinic input]
24432412
output push
@@ -2667,9 +2636,6 @@ PyInit__testclinic(void)
26672636
if (PyModule_AddType(m, &VcNewExact_Type) < 0) {
26682637
goto error;
26692638
}
2670-
if (PyModule_AddType(m, &VcNewZeroArg_Type) < 0) {
2671-
goto error;
2672-
}
26732639
return m;
26742640

26752641
error:

Modules/clinic/_testclinic.c.h

Lines changed: 1 addition & 130 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Objects/clinic/tupleobject.c.h

Lines changed: 1 addition & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Objects/tupleobject.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -778,7 +778,7 @@ static PyObject *
778778
tuple_subtype_new(PyTypeObject *type, PyObject *iterable);
779779

780780
/*[clinic input]
781-
@vectorcall zero_arg=(PyObject*)&_Py_SINGLETON(tuple_empty)
781+
@vectorcall
782782
@classmethod
783783
tuple.__new__ as tuple_new
784784
iterable: object(c_default="NULL") = ()
@@ -794,7 +794,7 @@ If the argument is a tuple, the return value is the same object.
794794

795795
static PyObject *
796796
tuple_new_impl(PyTypeObject *type, PyObject *iterable)
797-
/*[clinic end generated code: output=4546d9f0d469bce7 input=fff66d7a13734d92]*/
797+
/*[clinic end generated code: output=4546d9f0d469bce7 input=8fdda913493ebe48]*/
798798
{
799799
if (type != &PyTuple_Type)
800800
return tuple_subtype_new(type, iterable);

Tools/clinic/libclinic/dsl_parser.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,6 @@ def reset(self) -> None:
304304
self.disable_fastcall = False
305305
self.vectorcall = False
306306
self.vectorcall_exact_only = False
307-
self.vectorcall_zero_arg = ''
308307
self.permit_long_summary = False
309308
self.permit_long_docstring_body = False
310309

@@ -480,10 +479,6 @@ def at_vectorcall(self, *args: str) -> None:
480479
key, value = arg, ''
481480
if key == 'exact_only':
482481
self.vectorcall_exact_only = True
483-
elif key == 'zero_arg':
484-
if not value:
485-
fail("@vectorcall zero_arg requires a value")
486-
self.vectorcall_zero_arg = value
487482
else:
488483
fail(f"@vectorcall: unknown argument {key!r}")
489484

@@ -751,7 +746,6 @@ def state_modulename_name(self, line: str) -> None:
751746
forced_text_signature=self.forced_text_signature,
752747
vectorcall=self.vectorcall,
753748
vectorcall_exact_only=self.vectorcall_exact_only,
754-
vectorcall_zero_arg=self.vectorcall_zero_arg,
755749
)
756750
self.add_function(func)
757751

Tools/clinic/libclinic/function.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,6 @@ class Function:
113113
target_critical_section: list[str] = dc.field(default_factory=list)
114114
vectorcall: bool = False
115115
vectorcall_exact_only: bool = False
116-
vectorcall_zero_arg: str = ''
117116

118117
def __post_init__(self) -> None:
119118
self.parent = self.cls or self.module

Tools/clinic/libclinic/parse_args.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1283,22 +1283,11 @@ def generate_vectorcall(self) -> str:
12831283
}}
12841284
""")
12851285

1286-
# Zero-arg shortcut: return a cached value when called with no args
1287-
zero_arg_shortcut = ""
1288-
if func.vectorcall_zero_arg:
1289-
zero_arg_shortcut = libclinic.normalize_snippet(f"""
1290-
if (nargs == 0 && kwnames == NULL) {{{{
1291-
return {func.vectorcall_zero_arg};
1292-
}}}}
1293-
""", indent=4)
1294-
12951286
# Assemble the full function
12961287
lines = [prototype]
12971288
lines.append(preamble)
12981289
if exact_check:
12991290
lines.append(exact_check)
1300-
if zero_arg_shortcut:
1301-
lines.append(zero_arg_shortcut)
13021291
lines.extend(parsing_code)
13031292
lines.append(finale)
13041293

0 commit comments

Comments
 (0)