Jeroen Demeyer
59ad110d7a
bpo-37547: add _PyObject_CallMethodOneArg (GH-14685)
2019-07-11 17:59:05 +09:00
Jeroen Demeyer
762f93ff2e
bpo-37337: Add _PyObject_CallMethodNoArgs() (GH-14267)
2019-07-08 17:19:25 +09:00
Jeroen Demeyer
196a530e00
bpo-37483: add _PyObject_CallOneArg() function ( #14558 )
2019-07-04 19:31:34 +09:00
Jeroen Demeyer
a8b27e623d
bpo-36974: inherit tp_vectorcall_offset unconditionally (GH-13858)
2019-06-24 12:41:05 +02:00
Jeroen Demeyer
2e9954d347
bpo-36922: use Py_TPFLAGS_METHOD_DESCRIPTOR in lookup_maybe_method() (GH-13865)
2019-06-17 20:53:20 +09:00
Jeroen Demeyer
b4b814b398
bpo-37231: optimize calls of special methods (GH-13973)
2019-06-13 18:26:44 +09:00
Jeroen Demeyer
be718c33f0
bpo-36974: add some assertions for PEP 590 (GH-13682)
2019-06-03 01:57:22 +02:00
Petr Viktorin
7f4ae1b2cc
bpo-37012: Clean up special cases in PyType_FromSpecWithBases slot assignments (GH-13496)
...
The main slot assignment loop is now if-else if ladder, making the
control flow clearer.
Based on suggestion by Victor Stinner in:
https://github.com/python/cpython/pull/10304/#issuecomment-491123026
2019-06-03 01:31:12 +02:00
Petr Viktorin
fb9423fd0a
bpo-36974: Make tp_call=PyVectorcall_Call work for inherited types (GH-13699)
...
When inheriting a heap subclass from a vectorcall class that sets
`.tp_call=PyVectorcall_Call` (as recommended in PEP 590), the subclass does
not inherit `_Py_TPFLAGS_HAVE_VECTORCALL`, and thus `PyVectorcall_Call` does
not work for it.
This attempts to solve the issue by:
* always inheriting `tp_vectorcall_offset` unless `tp_call` is overridden
in the subclass
* inheriting _Py_TPFLAGS_HAVE_VECTORCALL for static types, unless `tp_call`
is overridden
* making `PyVectorcall_Call` ignore `_Py_TPFLAGS_HAVE_VECTORCALL`
This means it'll be ever more important to only call `PyVectorcall_Call`
on classes that support vectorcall. In `PyVectorcall_Call`'s intended role
as `tp_call` filler, that's not a problem.
2019-06-02 23:52:20 +02:00
Pablo Galindo
cd74e66a8c
bpo-37122: Make co->co_argcount represent the total number of positonal arguments in the code object (GH-13726)
2019-06-01 18:08:04 +01:00
Pablo Galindo
3a46d5c293
bpo-37108: Support super with methods that use positional-only arguments (GH-13695)
2019-05-31 12:07:56 +01:00
Zackery Spytz
c7f803b08e
bpo-36379: __ipow__ must be a ternaryfunc, not a binaryfunc (GH-13546)
...
If a type's __ipow__ method was implemented in C, attempting to use
the *modulo* parameter would cause crashes.
https://bugs.python.org/issue36379
2019-05-31 02:46:36 -07:00
Jeroen Demeyer
530f506ac9
bpo-36974: tp_print -> tp_vectorcall_offset and tp_reserved -> tp_as_async (GH-13464)
...
Automatically replace
tp_print -> tp_vectorcall_offset
tp_compare -> tp_as_async
tp_reserved -> tp_as_async
2019-05-30 19:13:39 -07:00
Jeroen Demeyer
735e8afa9e
bpo-36974: inherit the vectorcall protocol (GH-13498)
2019-05-30 12:43:19 +02:00
Antoine Pitrou
ada319bb6d
bpo-32388: Remove cross-version binary compatibility requirement in tp_flags (GH-4944)
...
It is now allowed to add new fields at the end of the PyTypeObject struct without having to allocate a dedicated compatibility flag in tp_flags.
This will reduce the risk of running out of bits in the 32-bit tp_flags value.
2019-05-29 22:12:38 +02:00
Zackery Spytz
05f16416d9
bpo-26423: Fix possible overflow in wrap_lenfunc() (GH-13606)
...
Fix possible overflow in wrap_lenfunc() when
sizeof(long) < sizeof(Py_ssize_t) (e.g., 64-bit Windows).
2019-05-28 14:55:28 +02:00
Jeroen Demeyer
eb65e2443a
bpo-36922: implement PEP-590 Py_TPFLAGS_METHOD_DESCRIPTOR (GH-13338)
...
Co-authored-by: Mark Shannon <mark@hotpy.org>
2019-05-28 14:42:53 +02:00
Julien Palard
180dc1b0f4
bpo-28866: No type cache for types with specialized mro, invalidation is hard. ( #13157 )
...
* No type cache for types with specialized mro, invalidation is hard.
* FIX: Don't disable method cache custom types that do not implement mro().
* fixing implem.
* Avoid storing error flags, also decref.
* news entry
* Clear as soon as we're getting an error.
* FIX: Reference leak.
2019-05-26 15:25:47 +01:00
Cheryl Sabella
c95c93d4eb
bpo-20285: Improve help docs for object (GH-4759)
2019-05-24 06:43:29 -04:00
Steve Dower
b82e17e626
bpo-36842: Implement PEP 578 (GH-12613)
...
Adds sys.audit, sys.addaudithook, io.open_code, and associated C APIs.
2019-05-23 08:45:22 -07:00
Zackery Spytz
53d378c812
closes bpo-36951: Correct some types in the type_members struct in typeobject.c. (GH-13403)
2019-05-19 17:26:35 -07:00
Jeroen Demeyer
351c67416b
bpo-35983: skip trashcan for subclasses (GH-11841)
...
Add new trashcan macros to deal with a double deallocation that could occur when the `tp_dealloc` of a subclass calls the `tp_dealloc` of a base class and that base class uses the trashcan mechanism.
Patch by Jeroen Demeyer.
2019-05-10 19:21:10 +02:00
Zackery Spytz
0613c1e481
Fix a possible crash due to PyType_FromSpecWithBases() (GH-10304)
...
If the PyObject_MALLOC() call failed in PyType_FromSpecWithBases(),
PyObject_Free() would be called on a static string in type_dealloc().
2019-05-09 14:33:31 -04:00
Eddie Elizondo
8b1271b12f
Only count number of members once ( #12691 )
2019-05-06 08:28:50 -07:00
Victor Stinner
0fc91eef34
bpo-36389: Add _PyObject_CheckConsistency() function (GH-12803)
...
Add a new _PyObject_CheckConsistency() function which can be used to
help debugging. The function is available in release mode.
Add a 'check_content' parameter to _PyDict_CheckConsistency().
2019-04-12 21:51:34 +02:00
Eddie Elizondo
364f0b0f19
bpo-35810: Incref heap-allocated types in PyObject_Init (GH-11661)
...
* Incref heap-allocated types in PyObject_Init
* Add documentation and porting notes to What's New
2019-03-27 12:52:18 +01:00
Benjamin Peterson
d5a551c269
closes bpo-36115: Fix some reference leaks in typeobject.c. (GH-12045)
...
a24107b04c
introduced a few refleaks.
https://bugs.python.org/issue36115
2019-02-25 23:12:10 -08:00
Serhiy Storchaka
a24107b04c
bpo-35459: Use PyDict_GetItemWithError() instead of PyDict_GetItem(). (GH-11112)
2019-02-25 17:59:46 +02:00
Stefan Behnel
d8b9e1fc2e
bpo-36012: Avoid linear slot search for non-dunder methods (GH-11907)
2019-02-20 09:29:24 -08:00
Sanyam Khurana
5105483acb
bpo-31506: Clarify error messages for object.__new__ and object.__init__ (GH-11641)
...
`object.__new__` and `object.__init__` do take one argument each,
they just don't take extra user supplied arguments.
Patch by Sanyam Khurana.
2019-02-19 23:23:48 +10:00
Xtreak
6326278e8a
bpo-34193: Fix pluralization in getargs.c and test cases. (GH-8438)
2018-12-21 16:45:13 +02:00
Serhiy Storchaka
1c607155c9
bpo-33012: Fix more invalid function cast warnings with gcc 8. (GH-10751)
...
Fix warnings with gcc 8 for wrapperfunc <-> wrapperfunc_kwds casts.
2018-11-27 21:34:27 +02:00
Serhiy Storchaka
62be74290a
bpo-33012: Fix invalid function cast warnings with gcc 8. (GH-6749)
...
Fix invalid function cast warnings with gcc 8
for method conventions different from METH_NOARGS, METH_O and
METH_VARARGS excluding Argument Clinic generated code.
2018-11-27 13:27:31 +02:00
Victor Stinner
bcda8f1d42
bpo-35081: Add Include/internal/pycore_object.h (GH-10640)
...
Move _PyObject_GC_TRACK() and _PyObject_GC_UNTRACK() from
Include/objimpl.h to Include/internal/pycore_object.h.
2018-11-21 22:27:47 +01:00
Eddie Elizondo
474eedfb3d
bpo-34784: Fix PyStructSequence_NewType with heap-allocated StructSequence (GH-9665)
2018-11-13 13:09:31 +01:00
Victor Stinner
621cebe81b
bpo-35081: Rename internal headers (GH-10275)
...
Rename Include/internal/ headers:
* pycore_hash.h -> pycore_pyhash.h
* pycore_lifecycle.h -> pycore_pylifecycle.h
* pycore_mem.h -> pycore_pymem.h
* pycore_state.h -> pycore_pystate.h
Add missing headers to Makefile.pre.in and PCbuild:
* pycore_condvar.h.
* pycore_hamt.h
* pycore_pyhash.h
2018-11-12 16:53:38 +01:00
Victor Stinner
50b48572d9
bpo-35081: Add _PyThreadState_GET() internal macro (GH-10266)
...
If Py_BUILD_CORE is defined, the PyThreadState_GET() macro access
_PyRuntime which comes from the internal pycore_state.h header.
Public headers must not require internal headers.
Move PyThreadState_GET() and _PyInterpreterState_GET_UNSAFE() from
Include/pystate.h to Include/internal/pycore_state.h, and rename
PyThreadState_GET() to _PyThreadState_GET() there.
The PyThreadState_GET() macro of pystate.h is now redefined when
pycore_state.h is included, to use the fast _PyThreadState_GET().
Changes:
* Add _PyThreadState_GET() macro
* Replace "PyThreadState_GET()->interp" with
_PyInterpreterState_GET_UNSAFE()
* Replace PyThreadState_GET() with _PyThreadState_GET() in internal C
files (compiled with Py_BUILD_CORE defined), but keep
PyThreadState_GET() in the public header files.
* _testcapimodule.c: replace PyThreadState_GET() with
PyThreadState_Get(); the module is not compiled with Py_BUILD_CORE
defined.
* pycore_state.h now requires Py_BUILD_CORE to be defined.
2018-11-01 01:51:40 +01:00
Victor Stinner
27e2d1f219
bpo-35081: Add pycore_ prefix to internal header files (GH-10263)
...
* Rename Include/internal/ header files:
* pyatomic.h -> pycore_atomic.h
* ceval.h -> pycore_ceval.h
* condvar.h -> pycore_condvar.h
* context.h -> pycore_context.h
* pygetopt.h -> pycore_getopt.h
* gil.h -> pycore_gil.h
* hamt.h -> pycore_hamt.h
* hash.h -> pycore_hash.h
* mem.h -> pycore_mem.h
* pystate.h -> pycore_state.h
* warnings.h -> pycore_warnings.h
* PCbuild project, Makefile.pre.in, Modules/Setup: add the
Include/internal/ directory to the search paths of header files.
* Update includes. For example, replace #include "internal/mem.h"
with #include "pycore_mem.h".
2018-11-01 00:52:28 +01:00
Serhiy Storchaka
0353b4eaaf
bpo-33138: Change standard error message for non-pickleable and non-copyable types. (GH-6239)
2018-10-31 02:28:07 +02:00
Victor Stinner
50fe3f8913
bpo-9263: _PyXXX_CheckConsistency() use _PyObject_ASSERT() (GH-10108)
...
Use _PyObject_ASSERT() in:
* _PyDict_CheckConsistency()
* _PyType_CheckConsistency()
* _PyUnicode_CheckConsistency()
_PyObject_ASSERT() dumps the faulty object if the assertion fails
to help debugging.
2018-10-26 18:47:15 +02:00
Victor Stinner
0862505a03
bpo-9263: Use _PyObject_ASSERT() in typeobject.c (GH-10111)
...
Replace assert() with _PyObject_ASSERT() in Objects/typeobject.c
to dump the faulty object on assertion failure to ease debugging.
2018-10-26 18:39:11 +02:00
jdemeyer
8f735485ac
bpo-25750: fix refcounts in type_getattro() (GH-6118)
...
When calling tp_descr_get(self, obj, type), make sure that
we own a strong reference to "self".
2018-09-07 09:37:00 +02:00
Alexey Izbyshev
5f79b50763
closes bpo-34501: PyType_FromSpecWithBases: Check spec->name before dereferencing it. (GH-8930)
...
Reported by Svace static analyzer.
2018-08-25 11:53:47 -07:00
Alexey Izbyshev
f6247aac08
closes bpo-34477: Objects/typeobject.c: Add missing NULL check to type_init() (GH-8876)
...
Reported by Svace static analyzer.
2018-08-23 21:22:16 -07:00
Grant Jenks
0904f766e1
Fix typo in __mul__ and __rmul__ docstring (GH-6674)
2018-05-09 01:00:19 +03:00
Leo Arias
c3d9508ff2
bpo-32746: Fix multiple typos (GH-5144)
...
Fix typos found by codespell in docs, docstrings, and comments.
2018-02-03 19:36:10 -05:00
Serhiy Storchaka
f320be77ff
bpo-32571: Avoid raising unneeded AttributeError and silencing it in C code (GH-5222)
...
Add two new private APIs: _PyObject_LookupAttr() and _PyObject_LookupAttrId()
2018-01-25 17:49:40 +09:00
Serhiy Storchaka
ce5b0e9db1
bpo-32226: Make __class_getitem__ an automatic class method. ( #5098 )
2018-01-05 00:21:41 +02:00
Berker Peksag
78e24d4415
Fix outdated comment in typeobject.c (GH-5090)
...
The comment was added in 3abca127fe
.
In d78448e912
, it was changed to
use PyArg_ParseTuple instead.
2018-01-04 13:24:45 +03:00
Serhiy Storchaka
6b91a59721
bpo-32385: Clean up the C3 MRO algorithm implementation. ( #4942 )
...
Use tuples and raw arrays instead of lists.
2017-12-20 19:21:02 +02:00