diff options
-rw-r--r-- | Misc/NEWS | 2 | ||||
-rw-r--r-- | Modules/clinic/_bz2module.c.h | 11 | ||||
-rwxr-xr-x | Tools/clinic/clinic.py | 20 |
3 files changed, 23 insertions, 10 deletions
@@ -133,7 +133,7 @@ Library IDLE ---- ---Issue #17390: Add Python version to Idle editor window title bar. +- Issue #17390: Add Python version to Idle editor window title bar. Original patches by Edmond Burnett and Kent Johnson. - Issue #18960: IDLE now ignores the source encoding declaration on the second diff --git a/Modules/clinic/_bz2module.c.h b/Modules/clinic/_bz2module.c.h index 68250af..1611002 100644 --- a/Modules/clinic/_bz2module.c.h +++ b/Modules/clinic/_bz2module.c.h @@ -75,7 +75,8 @@ _bz2_BZ2Compressor___init__(PyObject *self, PyObject *args, PyObject *kwargs) int return_value = -1; int compresslevel = 9; - if (!_PyArg_NoKeywords("BZ2Compressor", kwargs)) + if ((Py_TYPE(self) == &BZ2Compressor_Type) && + !_PyArg_NoKeywords("BZ2Compressor", kwargs)) goto exit; if (!PyArg_ParseTuple(args, "|i:BZ2Compressor", @@ -137,13 +138,15 @@ _bz2_BZ2Decompressor___init__(PyObject *self, PyObject *args, PyObject *kwargs) { int return_value = -1; - if (!_PyArg_NoPositional("BZ2Decompressor", args)) + if ((Py_TYPE(self) == &BZ2Decompressor_Type) && + !_PyArg_NoPositional("BZ2Decompressor", args)) goto exit; - if (!_PyArg_NoKeywords("BZ2Decompressor", kwargs)) + if ((Py_TYPE(self) == &BZ2Decompressor_Type) && + !_PyArg_NoKeywords("BZ2Decompressor", kwargs)) goto exit; return_value = _bz2_BZ2Decompressor___init___impl((BZ2Decompressor *)self); exit: return return_value; } -/*[clinic end generated code: checksum=9bb33ae7d35494b7a5365f03f390e4b5b8b1bc49]*/ +/*[clinic end generated code: checksum=4ade1dba3921a8bd8a614e5417f7654d8fb10be5]*/ diff --git a/Tools/clinic/clinic.py b/Tools/clinic/clinic.py index 184bb39..f3fe3c1 100755 --- a/Tools/clinic/clinic.py +++ b/Tools/clinic/clinic.py @@ -2593,11 +2593,21 @@ class self_converter(CConverter): def set_template_dict(self, template_dict): template_dict['self_name'] = self.name template_dict['self_type'] = self.parser_type - if ((self.function.kind == METHOD_NEW) and - self.function.cls and - self.function.cls.typedef): - template_dict['self_type_object'] = self.function.cls.type_object - template_dict['self_type_check'] = '({self_name} == {self_type_object}) &&\n '.format_map(template_dict) + kind = self.function.kind + cls = self.function.cls + + if ((kind in (METHOD_NEW, METHOD_INIT)) and cls and cls.typedef): + if kind == METHOD_NEW: + passed_in_type = self.name + else: + passed_in_type = 'Py_TYPE({})'.format(self.name) + + line = '({passed_in_type} == {type_object}) &&\n ' + d = { + 'type_object': self.function.cls.type_object, + 'passed_in_type': passed_in_type + } + template_dict['self_type_check'] = line.format_map(d) |