From e99380cc39fa14ea4e2c28cb19ec7b61f50cf305 Mon Sep 17 00:00:00 2001 From: Brandt Bucher Date: Fri, 4 Nov 2022 15:00:51 -0700 Subject: [PATCH 01/11] GH-98831: Add `regen-cases` to `regen-all` (#99107) --- Makefile.pre.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index f4df488623e268..7599e00842ec13 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -1224,7 +1224,7 @@ regen-limited-abi: all ############################################################################ # Regenerate all generated files -regen-all: regen-opcode regen-opcode-targets regen-typeslots \ +regen-all: regen-cases regen-opcode regen-opcode-targets regen-typeslots \ regen-token regen-ast regen-keyword regen-sre regen-frozen clinic \ regen-pegen-metaparser regen-pegen regen-test-frozenmain \ regen-test-levenshtein regen-global-objects From c885623e9fa596cbe4fd359ea4aedfbde0ae2482 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Fri, 4 Nov 2022 15:30:17 -0700 Subject: [PATCH 02/11] GH-98831: Auto-generate PREDICTED() macro calls (#99102) Co-authored-by: Brandt Bucher --- Python/bytecodes.c | 16 ---------------- Tools/cases_generator/generate_cases.py | 7 +++++++ 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/Python/bytecodes.c b/Python/bytecodes.c index b0d56279e04379..072eee42f29ec9 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -112,7 +112,6 @@ dummy_func( // stack effect: ( -- __0) inst(LOAD_CONST) { - PREDICTED(LOAD_CONST); PyObject *value = GETITEM(consts, oparg); Py_INCREF(value); PUSH(value); @@ -431,7 +430,6 @@ dummy_func( // stack effect: (__0 -- ) inst(BINARY_SUBSCR) { - PREDICTED(BINARY_SUBSCR); PyObject *sub = POP(); PyObject *container = TOP(); PyObject *res = PyObject_GetItem(container, sub); @@ -631,7 +629,6 @@ dummy_func( // stack effect: (__0, __1, __2 -- ) inst(STORE_SUBSCR) { - PREDICTED(STORE_SUBSCR); PyObject *sub = TOP(); PyObject *container = SECOND(); PyObject *v = THIRD(); @@ -884,7 +881,6 @@ dummy_func( // stack effect: ( -- ) inst(GET_AWAITABLE) { - PREDICTED(GET_AWAITABLE); PyObject *iterable = TOP(); PyObject *iter = _PyCoro_GetAwaitableIter(iterable); @@ -1204,7 +1200,6 @@ dummy_func( // stack effect: (__0 -- __array[oparg]) inst(UNPACK_SEQUENCE) { - PREDICTED(UNPACK_SEQUENCE); PyObject *seq = POP(); PyObject **top = stack_pointer + oparg; if (!unpack_iterable(tstate, seq, oparg, -1, top)) { @@ -1290,7 +1285,6 @@ dummy_func( // stack effect: (__0, __1 -- ) inst(STORE_ATTR) { - PREDICTED(STORE_ATTR); PyObject *name = GETITEM(names, oparg); PyObject *owner = TOP(); PyObject *v = SECOND(); @@ -1407,7 +1401,6 @@ dummy_func( // error: LOAD_GLOBAL has irregular stack effect inst(LOAD_GLOBAL) { - PREDICTED(LOAD_GLOBAL); int push_null = oparg & 1; PEEK(0) = NULL; PyObject *name = GETITEM(names, oparg>>1); @@ -1871,7 +1864,6 @@ dummy_func( // error: LOAD_ATTR has irregular stack effect inst(LOAD_ATTR) { - PREDICTED(LOAD_ATTR); PyObject *name = GETITEM(names, oparg >> 1); PyObject *owner = TOP(); if (oparg & 1) { @@ -2276,7 +2268,6 @@ dummy_func( // stack effect: (__0 -- ) inst(COMPARE_OP) { - PREDICTED(COMPARE_OP); assert(oparg <= Py_GE); PyObject *right = POP(); PyObject *left = TOP(); @@ -2539,7 +2530,6 @@ dummy_func( // stack effect: ( -- ) inst(JUMP_BACKWARD) { - PREDICTED(JUMP_BACKWARD); assert(oparg < INSTR_OFFSET()); JUMPBY(-oparg); CHECK_EVAL_BREAKER(); @@ -2547,7 +2537,6 @@ dummy_func( // stack effect: (__0 -- ) inst(POP_JUMP_IF_FALSE) { - PREDICTED(POP_JUMP_IF_FALSE); PyObject *cond = POP(); if (Py_IsTrue(cond)) { _Py_DECREF_NO_DEALLOC(cond); @@ -2788,7 +2777,6 @@ dummy_func( // stack effect: ( -- __0) inst(FOR_ITER) { - PREDICTED(FOR_ITER); /* before: [iter]; after: [iter, iter()] *or* [] */ PyObject *iter = TOP(); PyObject *next = (*Py_TYPE(iter)->tp_iternext)(iter); @@ -3118,7 +3106,6 @@ dummy_func( // stack effect: (__0, __array[oparg] -- ) inst(CALL) { - PREDICTED(CALL); int total_args, is_meth; is_meth = is_method(stack_pointer, oparg); PyObject *function = PEEK(oparg + 1); @@ -3216,7 +3203,6 @@ dummy_func( // stack effect: (__0, __array[oparg] -- ) inst(CALL_PY_EXACT_ARGS) { - PREDICTED(CALL_PY_EXACT_ARGS); assert(call_shape.kwnames == NULL); DEOPT_IF(tstate->interp->eval_frame, CALL); _PyCallCache *cache = (_PyCallCache *)next_instr; @@ -3721,7 +3707,6 @@ dummy_func( // error: CALL_FUNCTION_EX has irregular stack effect inst(CALL_FUNCTION_EX) { - PREDICTED(CALL_FUNCTION_EX); PyObject *func, *callargs, *kwargs = NULL, *result; if (oparg & 0x01) { kwargs = POP(); @@ -3913,7 +3898,6 @@ dummy_func( // stack effect: (__0 -- ) inst(BINARY_OP) { - PREDICTED(BINARY_OP); PyObject *rhs = POP(); PyObject *lhs = TOP(); assert(0 <= oparg); diff --git a/Tools/cases_generator/generate_cases.py b/Tools/cases_generator/generate_cases.py index 305ffdad240180..82e58017d64836 100644 --- a/Tools/cases_generator/generate_cases.py +++ b/Tools/cases_generator/generate_cases.py @@ -6,6 +6,7 @@ import argparse import io +import re import sys import parser @@ -61,12 +62,18 @@ def always_exits(block: parser.Block) -> bool: def write_cases(f: io.TextIOBase, instrs: list[InstDef]): + predictions = set() + for inst in instrs: + for target in re.findall(r"(?:PREDICT|GO_TO_INSTRUCTION)\((\w+)\)", inst.block.text): + predictions.add(target) indent = " " f.write("// This file is generated by Tools/scripts/generate_cases.py\n") f.write("// Do not edit!\n") for instr in instrs: assert isinstance(instr, InstDef) f.write(f"\n{indent}TARGET({instr.name}) {{\n") + if instr.name in predictions: + f.write(f"{indent} PREDICTED({instr.name});\n") # input = ", ".join(instr.inputs) # output = ", ".join(instr.outputs) # f.write(f"{indent} // {input} -- {output}\n") From 7a020b8e5b1bfabfa57789be489b81eba5baa623 Mon Sep 17 00:00:00 2001 From: Mark Shannon Date: Fri, 4 Nov 2022 16:37:53 -0700 Subject: [PATCH 03/11] GH-98831: Add some macros definitions to bytecodes.c to reduce IDE warnings. (#99093) --- Python/bytecodes.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/Python/bytecodes.c b/Python/bytecodes.c index 072eee42f29ec9..16ac1d9d2e95ac 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -28,10 +28,37 @@ void _PyFloat_ExactDealloc(PyObject *); void _PyUnicode_ExactDealloc(PyObject *); +/* Stack effect macros + * These will be mostly replaced by stack effect descriptions, + * but the tooling need to recognize them. + */ #define SET_TOP(v) (stack_pointer[-1] = (v)) +#define SET_SECOND(v) (stack_pointer[-2] = (v)) #define PEEK(n) (stack_pointer[-(n)]) - +#define PUSH(val) (*(stack_pointer++) = (val)) +#define POP() (*(--stack_pointer)) +#define TOP() PEEK(1) +#define SECOND() PEEK(2) +#define STACK_GROW(n) (stack_pointer += (n)) +#define STACK_SHRINK(n) (stack_pointer -= (n)) +#define EMPTY() 1 +#define STACK_LEVEL() 2 + +/* Local variable macros */ #define GETLOCAL(i) (frame->localsplus[i]) +#define SETLOCAL(i, val) \ +do { \ + PyObject *_tmp = frame->localsplus[i]; \ + frame->localsplus[i] = (val); \ + Py_XDECREF(_tmp); \ +} while (0) + +/* Flow control macros */ +#define DEOPT_IF(cond, instname) ((void)0) +#define JUMPBY(offset) ((void)0) +#define GO_TO_INSTRUCTION(instname) ((void)0) +#define DISPATCH_SAME_OPARG() ((void)0) +#define DISPATCH() ((void)0) #define inst(name) case name: #define family(name) static int family_##name @@ -43,7 +70,7 @@ typedef struct { PyObject *kwnames; } CallShape; -static void +static PyObject * dummy_func( PyThreadState *tstate, _PyInterpreterFrame *frame, From 6a8d3c57afd6729c410fa17cf0efc08d1b065e15 Mon Sep 17 00:00:00 2001 From: Brandt Bucher Date: Fri, 4 Nov 2022 16:54:32 -0700 Subject: [PATCH 04/11] GH-98686: Fix compiler warning for HAS_ARG (GH-99106) --- Python/ceval.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Python/ceval.c b/Python/ceval.c index 54f2282268242c..85011afadf7fb1 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -143,7 +143,7 @@ lltrace_instruction(_PyInterpreterFrame *frame, const char *opname = _PyOpcode_OpName[opcode]; assert(opname != NULL); int offset = (int)(next_instr - _PyCode_CODE(frame->f_code)); - if (HAS_ARG(_PyOpcode_Deopt[opcode])) { + if (HAS_ARG((int)_PyOpcode_Deopt[opcode])) { printf("%d: %s %d\n", offset * 2, opname, oparg); } else { From d04899abb0da4cc7c0a390f5bc52d57ace8955fd Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Fri, 4 Nov 2022 17:40:43 -0700 Subject: [PATCH 05/11] GH-99104: Update headers for bytecodes.c and generate_cases.py (#99112) Also tweak the labels near the end of bytecodes.c. --- Python/bytecodes.c | 23 ++++++++++++++++------- Python/generated_cases.c.h | 2 +- Tools/cases_generator/generate_cases.py | 3 ++- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/Python/bytecodes.c b/Python/bytecodes.c index 16ac1d9d2e95ac..e87ca6ebe8a051 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -1,3 +1,11 @@ +// This file contains instruction definitions. +// It is read by Tools/cases_generator/generate_cases.py +// to generate Python/generated_cases.c.h. +// Note that there is some dummy C code at the top and bottom of the file +// to fool text editors like VS Code into believing this is valid C code. +// The actual instruction definitions start at // BEGIN BYTECODES //. +// See Tools/cases_generator/README.md for more information. + #include "Python.h" #include "pycore_abstract.h" // _PyIndex_Check() #include "pycore_call.h" // _PyObject_FastCallDictTstate() @@ -4003,13 +4011,14 @@ dummy_func( // END BYTECODES // } - error:; - exception_unwind:; - handle_eval_breaker:; - resume_frame:; - resume_with_error:; - start_frame:; - unbound_local_error:; + error: + exception_unwind: + handle_eval_breaker: + resume_frame: + resume_with_error: + start_frame: + unbound_local_error: + ; } // Families go below this point // diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h index bea51d7e5160dc..c678de5dff335b 100644 --- a/Python/generated_cases.c.h +++ b/Python/generated_cases.c.h @@ -1,4 +1,4 @@ -// This file is generated by Tools/scripts/generate_cases.py +// This file is generated by Tools/cases_generator/generate_cases.py // Do not edit! TARGET(NOP) { diff --git a/Tools/cases_generator/generate_cases.py b/Tools/cases_generator/generate_cases.py index 82e58017d64836..ec2481b31b9fd6 100644 --- a/Tools/cases_generator/generate_cases.py +++ b/Tools/cases_generator/generate_cases.py @@ -6,6 +6,7 @@ import argparse import io +import os import re import sys @@ -67,7 +68,7 @@ def write_cases(f: io.TextIOBase, instrs: list[InstDef]): for target in re.findall(r"(?:PREDICT|GO_TO_INSTRUCTION)\((\w+)\)", inst.block.text): predictions.add(target) indent = " " - f.write("// This file is generated by Tools/scripts/generate_cases.py\n") + f.write(f"// This file is generated by {os.path.relpath(__file__)}\n") f.write("// Do not edit!\n") for instr in instrs: assert isinstance(instr, InstDef) From 12078e78f6e4a21f344e4eaff529e1ff3b97734f Mon Sep 17 00:00:00 2001 From: Sam James Date: Sat, 5 Nov 2022 08:30:31 +0000 Subject: [PATCH 06/11] gh-99086: Fix implicit int compiler warning in configure check for PTHREAD_SCOPE_SYSTEM (#99085) --- .../next/Build/2022-11-04-02-58-10.gh-issue-99086.DV_4Br.rst | 1 + configure | 2 +- configure.ac | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Build/2022-11-04-02-58-10.gh-issue-99086.DV_4Br.rst diff --git a/Misc/NEWS.d/next/Build/2022-11-04-02-58-10.gh-issue-99086.DV_4Br.rst b/Misc/NEWS.d/next/Build/2022-11-04-02-58-10.gh-issue-99086.DV_4Br.rst new file mode 100644 index 00000000000000..e320ecfdfbb791 --- /dev/null +++ b/Misc/NEWS.d/next/Build/2022-11-04-02-58-10.gh-issue-99086.DV_4Br.rst @@ -0,0 +1 @@ +Fix ``-Wimplicit-int`` compiler warning in :program:`configure` check for ``PTHREAD_SCOPE_SYSTEM``. diff --git a/configure b/configure index edd3771784c76f..ab3d6ee3c2eace 100755 --- a/configure +++ b/configure @@ -15350,7 +15350,7 @@ else void *foo(void *parm) { return NULL; } - main() { + int main() { pthread_attr_t attr; pthread_t id; if (pthread_attr_init(&attr)) return (-1); diff --git a/configure.ac b/configure.ac index 0ca5e3fcbf5496..aebe2408c0b3a3 100644 --- a/configure.ac +++ b/configure.ac @@ -4361,7 +4361,7 @@ if test "$posix_threads" = "yes"; then void *foo(void *parm) { return NULL; } - main() { + int main() { pthread_attr_t attr; pthread_t id; if (pthread_attr_init(&attr)) return (-1); From b5f711185bd11819566068ddf2a74a1402340e2d Mon Sep 17 00:00:00 2001 From: Nikita Sobolev Date: Sat, 5 Nov 2022 16:07:59 +0300 Subject: [PATCH 07/11] gh-94808: add tests covering `PyEval_GetFuncDesc` function (GH-98300) --- Lib/test/test_capi.py | 15 +++++++++++++++ Modules/_testcapimodule.c | 7 +++++++ 2 files changed, 22 insertions(+) diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py index 49f207ed953c2d..07f27ccf07bfb8 100644 --- a/Lib/test/test_capi.py +++ b/Lib/test/test_capi.py @@ -907,6 +907,21 @@ def method_example(self): ... self.assertEqual(_testcapi.eval_get_func_name(sum), "sum") # c function self.assertEqual(_testcapi.eval_get_func_name(A), "type") + def test_eval_get_func_desc(self): + def function_example(): ... + + class A: + def method_example(self): ... + + self.assertEqual(_testcapi.eval_get_func_desc(function_example), + "()") + self.assertEqual(_testcapi.eval_get_func_desc(A.method_example), + "()") + self.assertEqual(_testcapi.eval_get_func_desc(A().method_example), + "()") + self.assertEqual(_testcapi.eval_get_func_desc(sum), "()") # c function + self.assertEqual(_testcapi.eval_get_func_desc(A), " object") + def test_function_get_code(self): import types diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index 19ceb108ed4e36..269642e4df0947 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -5579,6 +5579,12 @@ eval_get_func_name(PyObject *self, PyObject *func) return PyUnicode_FromString(PyEval_GetFuncName(func)); } +static PyObject * +eval_get_func_desc(PyObject *self, PyObject *func) +{ + return PyUnicode_FromString(PyEval_GetFuncDesc(func)); +} + static PyObject * get_feature_macros(PyObject *self, PyObject *Py_UNUSED(args)) { @@ -6226,6 +6232,7 @@ static PyMethodDef TestMethods[] = { {"frame_getbuiltins", frame_getbuiltins, METH_O, NULL}, {"frame_getlasti", frame_getlasti, METH_O, NULL}, {"eval_get_func_name", eval_get_func_name, METH_O, NULL}, + {"eval_get_func_desc", eval_get_func_desc, METH_O, NULL}, {"get_feature_macros", get_feature_macros, METH_NOARGS, NULL}, {"test_code_api", test_code_api, METH_NOARGS, NULL}, {"settrace_to_record", settrace_to_record, METH_O, NULL}, From 67ade403a2dbbb41f270afd7000febadef85a27e Mon Sep 17 00:00:00 2001 From: Kaushik Kulkarni <15399010+kaushikcfd@users.noreply.github.com> Date: Sat, 5 Nov 2022 11:31:57 -0500 Subject: [PATCH 08/11] gh-98284: better error message for undefined abstractmethod (#97971) --- Include/internal/pycore_global_strings.h | 1 - .../internal/pycore_runtime_init_generated.h | 5 ----- Lib/test/test_abc.py | 12 ++++++------ Lib/test/test_dataclasses.py | 2 +- ...2-10-15-10-43-45.gh-issue-98284.SaVHTd.rst | 3 +++ Objects/typeobject.c | 19 +++++++++++++------ 6 files changed, 23 insertions(+), 19 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2022-10-15-10-43-45.gh-issue-98284.SaVHTd.rst diff --git a/Include/internal/pycore_global_strings.h b/Include/internal/pycore_global_strings.h index 002d81e3e7db66..e60bd4b94bbcdf 100644 --- a/Include/internal/pycore_global_strings.h +++ b/Include/internal/pycore_global_strings.h @@ -37,7 +37,6 @@ struct _Py_global_strings { STRUCT_FOR_STR(anon_string, "") STRUCT_FOR_STR(anon_unknown, "") STRUCT_FOR_STR(close_br, "}") - STRUCT_FOR_STR(comma_sep, ", ") STRUCT_FOR_STR(dbl_close_br, "}}") STRUCT_FOR_STR(dbl_open_br, "{{") STRUCT_FOR_STR(dbl_percent, "%%") diff --git a/Include/internal/pycore_runtime_init_generated.h b/Include/internal/pycore_runtime_init_generated.h index 88b84cbe0166a2..8ce103700d6966 100644 --- a/Include/internal/pycore_runtime_init_generated.h +++ b/Include/internal/pycore_runtime_init_generated.h @@ -547,7 +547,6 @@ extern "C" { INIT_STR(anon_string, ""), \ INIT_STR(anon_unknown, ""), \ INIT_STR(close_br, "}"), \ - INIT_STR(comma_sep, ", "), \ INIT_STR(dbl_close_br, "}}"), \ INIT_STR(dbl_open_br, "{{"), \ INIT_STR(dbl_percent, "%%"), \ @@ -4865,10 +4864,6 @@ _PyStaticObjects_CheckRefcnt(void) { _PyObject_Dump((PyObject *)&_Py_STR(close_br)); Py_FatalError("immortal object has less refcnt than expected _PyObject_IMMORTAL_REFCNT"); }; - if (Py_REFCNT((PyObject *)&_Py_STR(comma_sep)) < _PyObject_IMMORTAL_REFCNT) { - _PyObject_Dump((PyObject *)&_Py_STR(comma_sep)); - Py_FatalError("immortal object has less refcnt than expected _PyObject_IMMORTAL_REFCNT"); - }; if (Py_REFCNT((PyObject *)&_Py_STR(dbl_close_br)) < _PyObject_IMMORTAL_REFCNT) { _PyObject_Dump((PyObject *)&_Py_STR(dbl_close_br)); Py_FatalError("immortal object has less refcnt than expected _PyObject_IMMORTAL_REFCNT"); diff --git a/Lib/test/test_abc.py b/Lib/test/test_abc.py index a083236fb0fc44..86f31a9acb4d55 100644 --- a/Lib/test/test_abc.py +++ b/Lib/test/test_abc.py @@ -154,7 +154,7 @@ class C(metaclass=abc_ABCMeta): @abc.abstractmethod def method_one(self): pass - msg = r"class C without an implementation for abstract method method_one" + msg = r"class C without an implementation for abstract method 'method_one'" self.assertRaisesRegex(TypeError, msg, C) def test_object_new_with_many_abstractmethods(self): @@ -165,7 +165,7 @@ def method_one(self): @abc.abstractmethod def method_two(self): pass - msg = r"class C without an implementation for abstract methods method_one, method_two" + msg = r"class C without an implementation for abstract methods 'method_one', 'method_two'" self.assertRaisesRegex(TypeError, msg, C) def test_abstractmethod_integration(self): @@ -535,7 +535,7 @@ def updated_foo(self): A.foo = updated_foo abc.update_abstractmethods(A) self.assertEqual(A.__abstractmethods__, {'foo', 'bar'}) - msg = "class A without an implementation for abstract methods bar, foo" + msg = "class A without an implementation for abstract methods 'bar', 'foo'" self.assertRaisesRegex(TypeError, msg, A) def test_update_implementation(self): @@ -547,7 +547,7 @@ def foo(self): class B(A): pass - msg = "class B without an implementation for abstract method foo" + msg = "class B without an implementation for abstract method 'foo'" self.assertRaisesRegex(TypeError, msg, B) self.assertEqual(B.__abstractmethods__, {'foo'}) @@ -605,7 +605,7 @@ def foo(self): abc.update_abstractmethods(B) - msg = "class B without an implementation for abstract method foo" + msg = "class B without an implementation for abstract method 'foo'" self.assertRaisesRegex(TypeError, msg, B) def test_update_layered_implementation(self): @@ -627,7 +627,7 @@ def foo(self): abc.update_abstractmethods(C) - msg = "class C without an implementation for abstract method foo" + msg = "class C without an implementation for abstract method 'foo'" self.assertRaisesRegex(TypeError, msg, C) def test_update_multi_inheritance(self): diff --git a/Lib/test/test_dataclasses.py b/Lib/test/test_dataclasses.py index 01e66840085bff..a09f36c3dac1ce 100644 --- a/Lib/test/test_dataclasses.py +++ b/Lib/test/test_dataclasses.py @@ -3970,7 +3970,7 @@ class Date(A): day: 'int' self.assertTrue(inspect.isabstract(Date)) - msg = 'class Date without an implementation for abstract method foo' + msg = "class Date without an implementation for abstract method 'foo'" self.assertRaisesRegex(TypeError, msg, Date) diff --git a/Misc/NEWS.d/next/Library/2022-10-15-10-43-45.gh-issue-98284.SaVHTd.rst b/Misc/NEWS.d/next/Library/2022-10-15-10-43-45.gh-issue-98284.SaVHTd.rst new file mode 100644 index 00000000000000..ccabd421794380 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-10-15-10-43-45.gh-issue-98284.SaVHTd.rst @@ -0,0 +1,3 @@ +Improved :class:`TypeError` message for undefined abstract methods of a +:class:`abc.ABC` instance. The names of the missing methods are surrounded +by single-quotes to highlight them. diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 7f8f2c7846eb01..e2e40b5c15297d 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -4955,9 +4955,10 @@ object_new(PyTypeObject *type, PyObject *args, PyObject *kwds) PyObject *abstract_methods; PyObject *sorted_methods; PyObject *joined; + PyObject* comma_w_quotes_sep; Py_ssize_t method_count; - /* Compute ", ".join(sorted(type.__abstractmethods__)) + /* Compute "', '".join(sorted(type.__abstractmethods__)) into joined. */ abstract_methods = type_abstractmethods(type, NULL); if (abstract_methods == NULL) @@ -4970,22 +4971,28 @@ object_new(PyTypeObject *type, PyObject *args, PyObject *kwds) Py_DECREF(sorted_methods); return NULL; } - _Py_DECLARE_STR(comma_sep, ", "); - joined = PyUnicode_Join(&_Py_STR(comma_sep), sorted_methods); + comma_w_quotes_sep = PyUnicode_FromString("', '"); + joined = PyUnicode_Join(comma_w_quotes_sep, sorted_methods); method_count = PyObject_Length(sorted_methods); Py_DECREF(sorted_methods); - if (joined == NULL) + if (joined == NULL) { + Py_DECREF(comma_w_quotes_sep); return NULL; - if (method_count == -1) + } + if (method_count == -1) { + Py_DECREF(comma_w_quotes_sep); + Py_DECREF(joined); return NULL; + } PyErr_Format(PyExc_TypeError, "Can't instantiate abstract class %s " - "without an implementation for abstract method%s %U", + "without an implementation for abstract method%s '%U'", type->tp_name, method_count > 1 ? "s" : "", joined); Py_DECREF(joined); + Py_DECREF(comma_w_quotes_sep); return NULL; } PyObject *obj = type->tp_alloc(type, 0); From c5c40773cbadc8c35212877ea315a375f3bfaa4b Mon Sep 17 00:00:00 2001 From: Nikita Sobolev Date: Sat, 5 Nov 2022 20:08:00 +0300 Subject: [PATCH 09/11] gh-94808: add tests covering `PySequence_{Set,Del}Slice` (GH-99123) --- Lib/test/test_capi.py | 80 +++++++++++++++++++++++++++++++++++++++ Modules/_testcapimodule.c | 33 ++++++++++++++++ 2 files changed, 113 insertions(+) diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py index 07f27ccf07bfb8..0ecc6481cfce57 100644 --- a/Lib/test/test_capi.py +++ b/Lib/test/test_capi.py @@ -416,6 +416,86 @@ class SubDict(dict): self.assertTrue(_testcapi.mapping_has_key(dct2, 'a')) self.assertFalse(_testcapi.mapping_has_key(dct2, 'b')) + def test_sequence_set_slice(self): + # Correct case: + data = [1, 2, 3, 4, 5] + data_copy = data.copy() + + _testcapi.sequence_set_slice(data, 1, 3, [8, 9]) + data_copy[1:3] = [8, 9] + self.assertEqual(data, data_copy) + self.assertEqual(data, [1, 8, 9, 4, 5]) + + # Custom class: + class Custom: + def __setitem__(self, index, value): + self.index = index + self.value = value + + c = Custom() + _testcapi.sequence_set_slice(c, 0, 5, 'abc') + self.assertEqual(c.index, slice(0, 5)) + self.assertEqual(c.value, 'abc') + + # Immutable sequences must raise: + bad_seq1 = (1, 2, 3, 4) + with self.assertRaises(TypeError): + _testcapi.sequence_set_slice(bad_seq1, 1, 3, (8, 9)) + self.assertEqual(bad_seq1, (1, 2, 3, 4)) + + bad_seq2 = 'abcd' + with self.assertRaises(TypeError): + _testcapi.sequence_set_slice(bad_seq2, 1, 3, 'xy') + self.assertEqual(bad_seq2, 'abcd') + + # Not a sequence: + with self.assertRaises(TypeError): + _testcapi.sequence_set_slice(None, 1, 3, 'xy') + + mapping = {1: 'a', 2: 'b', 3: 'c'} + with self.assertRaises(TypeError): + _testcapi.sequence_set_slice(mapping, 1, 3, 'xy') + self.assertEqual(mapping, {1: 'a', 2: 'b', 3: 'c'}) + + def test_sequence_del_slice(self): + # Correct case: + data = [1, 2, 3, 4, 5] + data_copy = data.copy() + + _testcapi.sequence_del_slice(data, 1, 3) + del data_copy[1:3] + self.assertEqual(data, data_copy) + self.assertEqual(data, [1, 4, 5]) + + # Custom class: + class Custom: + def __delitem__(self, index): + self.index = index + + c = Custom() + _testcapi.sequence_del_slice(c, 0, 5) + self.assertEqual(c.index, slice(0, 5)) + + # Immutable sequences must raise: + bad_seq1 = (1, 2, 3, 4) + with self.assertRaises(TypeError): + _testcapi.sequence_del_slice(bad_seq1, 1, 3) + self.assertEqual(bad_seq1, (1, 2, 3, 4)) + + bad_seq2 = 'abcd' + with self.assertRaises(TypeError): + _testcapi.sequence_del_slice(bad_seq2, 1, 3) + self.assertEqual(bad_seq2, 'abcd') + + # Not a sequence: + with self.assertRaises(TypeError): + _testcapi.sequence_del_slice(None, 1, 3) + + mapping = {1: 'a', 2: 'b', 3: 'c'} + with self.assertRaises(TypeError): + _testcapi.sequence_del_slice(mapping, 1, 3) + self.assertEqual(mapping, {1: 'a', 2: 'b', 3: 'c'}) + @unittest.skipUnless(hasattr(_testcapi, 'negative_refcount'), 'need _testcapi.negative_refcount') def test_negative_refcount(self): diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index 269642e4df0947..f0f6d809cc85b8 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -4794,6 +4794,37 @@ mapping_has_key(PyObject* self, PyObject *args) return PyLong_FromLong(PyMapping_HasKey(context, key)); } +static PyObject * +sequence_set_slice(PyObject* self, PyObject *args) +{ + PyObject *sequence, *obj; + Py_ssize_t i1, i2; + if (!PyArg_ParseTuple(args, "OnnO", &sequence, &i1, &i2, &obj)) { + return NULL; + } + + int res = PySequence_SetSlice(sequence, i1, i2, obj); + if (res == -1) { + return NULL; + } + Py_RETURN_NONE; +} + +static PyObject * +sequence_del_slice(PyObject* self, PyObject *args) +{ + PyObject *sequence; + Py_ssize_t i1, i2; + if (!PyArg_ParseTuple(args, "Onn", &sequence, &i1, &i2)) { + return NULL; + } + + int res = PySequence_DelSlice(sequence, i1, i2); + if (res == -1) { + return NULL; + } + Py_RETURN_NONE; +} static PyObject * test_pythread_tss_key_state(PyObject *self, PyObject *args) @@ -6196,6 +6227,8 @@ static PyMethodDef TestMethods[] = { {"get_mapping_items", get_mapping_items, METH_O}, {"test_mapping_has_key_string", test_mapping_has_key_string, METH_NOARGS}, {"mapping_has_key", mapping_has_key, METH_VARARGS}, + {"sequence_set_slice", sequence_set_slice, METH_VARARGS}, + {"sequence_del_slice", sequence_del_slice, METH_VARARGS}, {"test_pythread_tss_key_state", test_pythread_tss_key_state, METH_VARARGS}, {"hamt", new_hamt, METH_NOARGS}, {"bad_get", _PyCFunction_CAST(bad_get), METH_FASTCALL}, From 317acb80387674db8c94f48bb9823ae516d05f5c Mon Sep 17 00:00:00 2001 From: Nikita Sobolev Date: Sat, 5 Nov 2022 20:08:47 +0300 Subject: [PATCH 10/11] gh-94808: add tests covering `PyFunction_GetKwDefaults` and `PyFunction_SetKwDefaults` (GH-98809) --- Lib/test/test_capi.py | 98 +++++++++++++++++++++++++++++++++++++-- Modules/_testcapimodule.c | 29 ++++++++++++ 2 files changed, 124 insertions(+), 3 deletions(-) diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py index 0ecc6481cfce57..213b6d4feb6322 100644 --- a/Lib/test/test_capi.py +++ b/Lib/test/test_capi.py @@ -1038,7 +1038,14 @@ def some(): _testcapi.function_get_module(None) # not a function def test_function_get_defaults(self): - def some(pos_only='p', zero=0, optional=None): + def some( + pos_only1, pos_only2='p', + /, + zero=0, optional=None, + *, + kw1, + kw2=True, + ): pass defaults = _testcapi.function_get_defaults(some) @@ -1046,10 +1053,17 @@ def some(pos_only='p', zero=0, optional=None): self.assertEqual(defaults, some.__defaults__) with self.assertRaises(SystemError): - _testcapi.function_get_module(None) # not a function + _testcapi.function_get_defaults(None) # not a function def test_function_set_defaults(self): - def some(pos_only='p', zero=0, optional=None): + def some( + pos_only1, pos_only2='p', + /, + zero=0, optional=None, + *, + kw1, + kw2=True, + ): pass old_defaults = ('p', 0, None) @@ -1061,11 +1075,22 @@ def some(pos_only='p', zero=0, optional=None): self.assertEqual(_testcapi.function_get_defaults(some), old_defaults) self.assertEqual(some.__defaults__, old_defaults) + with self.assertRaises(SystemError): + _testcapi.function_set_defaults(1, ()) # not a function + self.assertEqual(_testcapi.function_get_defaults(some), old_defaults) + self.assertEqual(some.__defaults__, old_defaults) + new_defaults = ('q', 1, None) _testcapi.function_set_defaults(some, new_defaults) self.assertEqual(_testcapi.function_get_defaults(some), new_defaults) self.assertEqual(some.__defaults__, new_defaults) + # Empty tuple is fine: + new_defaults = () + _testcapi.function_set_defaults(some, new_defaults) + self.assertEqual(_testcapi.function_get_defaults(some), new_defaults) + self.assertEqual(some.__defaults__, new_defaults) + class tuplesub(tuple): ... # tuple subclasses must work new_defaults = tuplesub(((1, 2), ['a', 'b'], None)) @@ -1079,6 +1104,73 @@ class tuplesub(tuple): ... # tuple subclasses must work self.assertEqual(_testcapi.function_get_defaults(some), None) self.assertEqual(some.__defaults__, None) + def test_function_get_kw_defaults(self): + def some( + pos_only1, pos_only2='p', + /, + zero=0, optional=None, + *, + kw1, + kw2=True, + ): + pass + + defaults = _testcapi.function_get_kw_defaults(some) + self.assertEqual(defaults, {'kw2': True}) + self.assertEqual(defaults, some.__kwdefaults__) + + with self.assertRaises(SystemError): + _testcapi.function_get_kw_defaults(None) # not a function + + def test_function_set_kw_defaults(self): + def some( + pos_only1, pos_only2='p', + /, + zero=0, optional=None, + *, + kw1, + kw2=True, + ): + pass + + old_defaults = {'kw2': True} + self.assertEqual(_testcapi.function_get_kw_defaults(some), old_defaults) + self.assertEqual(some.__kwdefaults__, old_defaults) + + with self.assertRaises(SystemError): + _testcapi.function_set_kw_defaults(some, 1) # not dict or None + self.assertEqual(_testcapi.function_get_kw_defaults(some), old_defaults) + self.assertEqual(some.__kwdefaults__, old_defaults) + + with self.assertRaises(SystemError): + _testcapi.function_set_kw_defaults(1, {}) # not a function + self.assertEqual(_testcapi.function_get_kw_defaults(some), old_defaults) + self.assertEqual(some.__kwdefaults__, old_defaults) + + new_defaults = {'kw2': (1, 2, 3)} + _testcapi.function_set_kw_defaults(some, new_defaults) + self.assertEqual(_testcapi.function_get_kw_defaults(some), new_defaults) + self.assertEqual(some.__kwdefaults__, new_defaults) + + # Empty dict is fine: + new_defaults = {} + _testcapi.function_set_kw_defaults(some, new_defaults) + self.assertEqual(_testcapi.function_get_kw_defaults(some), new_defaults) + self.assertEqual(some.__kwdefaults__, new_defaults) + + class dictsub(dict): ... # dict subclasses must work + + new_defaults = dictsub({'kw2': None}) + _testcapi.function_set_kw_defaults(some, new_defaults) + self.assertEqual(_testcapi.function_get_kw_defaults(some), new_defaults) + self.assertEqual(some.__kwdefaults__, new_defaults) + + # `None` is special, it sets `kwdefaults` to `NULL`, + # it needs special handling in `_testcapi`: + _testcapi.function_set_kw_defaults(some, None) + self.assertEqual(_testcapi.function_get_kw_defaults(some), None) + self.assertEqual(some.__kwdefaults__, None) + class TestPendingCalls(unittest.TestCase): diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index f0f6d809cc85b8..66d1d476328d3f 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -5862,6 +5862,33 @@ function_set_defaults(PyObject *self, PyObject *args) Py_RETURN_NONE; } +static PyObject * +function_get_kw_defaults(PyObject *self, PyObject *func) +{ + PyObject *defaults = PyFunction_GetKwDefaults(func); + if (defaults != NULL) { + Py_INCREF(defaults); + return defaults; + } else if (PyErr_Occurred()) { + return NULL; + } else { + Py_RETURN_NONE; // This can happen when `kwdefaults` are set to `None` + } +} + +static PyObject * +function_set_kw_defaults(PyObject *self, PyObject *args) +{ + PyObject *func = NULL, *defaults = NULL; + if (!PyArg_ParseTuple(args, "OO", &func, &defaults)) { + return NULL; + } + int result = PyFunction_SetKwDefaults(func, defaults); + if (result == -1) + return NULL; + Py_RETURN_NONE; +} + // type watchers @@ -6281,6 +6308,8 @@ static PyMethodDef TestMethods[] = { {"function_get_module", function_get_module, METH_O, NULL}, {"function_get_defaults", function_get_defaults, METH_O, NULL}, {"function_set_defaults", function_set_defaults, METH_VARARGS, NULL}, + {"function_get_kw_defaults", function_get_kw_defaults, METH_O, NULL}, + {"function_set_kw_defaults", function_set_kw_defaults, METH_VARARGS, NULL}, {"add_type_watcher", add_type_watcher, METH_O, NULL}, {"clear_type_watcher", clear_type_watcher, METH_O, NULL}, {"watch_type", watch_type, METH_VARARGS, NULL}, From 47ab8480e71ab3949a336a94c7fd146b1fce595d Mon Sep 17 00:00:00 2001 From: Paul Moore Date: Sat, 5 Nov 2022 17:50:39 +0000 Subject: [PATCH 11/11] gh-99134: Update bundled pip to 22.3.1 (gh-99135) Update bundled pip to 22.3.1 --- Lib/ensurepip/__init__.py | 2 +- ...ne-any.whl => pip-22.3.1-py3-none-any.whl} | Bin 2051507 -> 2051534 bytes ...2-11-05-17-16-40.gh-issue-99134.Msgspf.rst | 1 + 3 files changed, 2 insertions(+), 1 deletion(-) rename Lib/ensurepip/_bundled/{pip-22.3-py3-none-any.whl => pip-22.3.1-py3-none-any.whl} (94%) create mode 100644 Misc/NEWS.d/next/Library/2022-11-05-17-16-40.gh-issue-99134.Msgspf.rst diff --git a/Lib/ensurepip/__init__.py b/Lib/ensurepip/__init__.py index 4a6ba9cedf3d1c..1a2f57c07ba341 100644 --- a/Lib/ensurepip/__init__.py +++ b/Lib/ensurepip/__init__.py @@ -11,7 +11,7 @@ __all__ = ["version", "bootstrap"] _PACKAGE_NAMES = ('setuptools', 'pip') _SETUPTOOLS_VERSION = "65.5.0" -_PIP_VERSION = "22.3" +_PIP_VERSION = "22.3.1" _PROJECTS = [ ("setuptools", _SETUPTOOLS_VERSION, "py3"), ("pip", _PIP_VERSION, "py3"), diff --git a/Lib/ensurepip/_bundled/pip-22.3-py3-none-any.whl b/Lib/ensurepip/_bundled/pip-22.3.1-py3-none-any.whl similarity index 94% rename from Lib/ensurepip/_bundled/pip-22.3-py3-none-any.whl rename to Lib/ensurepip/_bundled/pip-22.3.1-py3-none-any.whl index d6fccd9de92afcbc686f159b9d719ba0ca0d6cab..c5b7753e757df23620ad5f039050e7dcd49fffb5 100644 GIT binary patch delta 55580 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 z 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