Commit Graph

6041 Commits

Author SHA1 Message Date
INADA Naoki ca2d8be4ba Issue #28580: Optimize iterating split table values.
Patch by Xiang Zhang.
2016-11-04 16:59:10 +09:00
INADA Naoki a3498c7569 Issue #28583: PyDict_SetDefault didn't combine split table when needed.
Patch by Xiang Zhang.
2016-11-02 18:47:24 +09:00
Serhiy Storchaka 5e325d9c41 Merge from 3.6. 2016-10-31 20:15:48 +02:00
Eric V. Smith 42454af094 Issue 28128: Print out better error/warning messages for invalid string escapes. 2016-10-31 09:22:08 -04:00
Serhiy Storchaka 79879e002f Issue #28385: An error message when non-empty format spec is passed to
object.__format__ now contains the name of actual type.
2016-10-30 19:38:05 +02:00
Serhiy Storchaka b982ae8317 Issue #28561: Clean up UTF-8 encoder: remove dead code, update comments, etc.
Patch by Xiang Zhang.
2016-10-30 18:25:46 +02:00
Serhiy Storchaka a182d7bc14 Merge from 3.6. 2016-10-30 17:27:40 +02:00
Serhiy Storchaka 041794908b Issue #28199: Microoptimized dict resizing. Based on patch by Naoki Inada. 2016-10-29 10:50:00 +03:00
Serhiy Storchaka d76d8bfee1 Issue #28199: Microoptimized dict resizing. Based on patch by Naoki Inada. 2016-10-29 10:49:43 +03:00
Yury Selivanov f0bbee6228 Merge 3.6 (issue #28544) 2016-10-28 19:01:46 -04:00
Yury Selivanov 684ef2c888 Issue #28544: Pass `PyObject*` to _PyDict_Pop, not `PyDictObject*` 2016-10-28 19:01:21 -04:00
Serhiy Storchaka 2edcd1cba4 Issue #28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(),
PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and
PyUnicode_AsEncodedUnicode().
2016-10-27 21:08:00 +03:00
Serhiy Storchaka 0093907f0e Issue #28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(),
PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and
PyUnicode_AsEncodedUnicode().
2016-10-27 21:05:49 +03:00
INADA Naoki b574e77122 Issue #28509: dict.update() no longer allocate unnecessary large memory 2016-10-27 19:30:10 +09:00
INADA Naoki b1152be2de Issue #28509: dict.update() no longer allocate unnecessary large memory 2016-10-27 19:26:50 +09:00
Serhiy Storchaka b3e5812300 Issue #27275: Fixed implementation of pop() and popitem() methods in
subclasses of accelerated OrderedDict.
2016-10-25 15:38:28 +03:00
Serhiy Storchaka 1faf9025b5 Issue #27275: Fixed implementation of pop() and popitem() methods in
subclasses of accelerated OrderedDict.
2016-10-25 15:36:56 +03:00
Serhiy Storchaka 4832580596 Issue #27275: Fixed implementation of pop() and popitem() methods in
subclasses of accelerated OrderedDict.
2016-10-25 15:33:23 +03:00
Serhiy Storchaka a4f8823063 Issue #28408: Fixed a leak and remove redundant code in _PyUnicodeWriter_Finish().
Patch by Xiang Zhang.
2016-10-25 13:25:04 +03:00
Serhiy Storchaka c8bc3d1c07 Issue #28408: Fixed a leak and remove redundant code in _PyUnicodeWriter_Finish().
Patch by Xiang Zhang.
2016-10-25 13:23:56 +03:00
Serhiy Storchaka d7e5ff13bb Issue #28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug build. 2016-10-25 10:18:16 +03:00
Serhiy Storchaka c4a3e90aa8 Issue #28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug build. 2016-10-25 10:17:33 +03:00
Serhiy Storchaka 839023f12c Issue #28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug build. 2016-10-25 10:13:43 +03:00
Serhiy Storchaka 77eede35fc Issue #28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug build. 2016-10-25 10:07:51 +03:00
Serhiy Storchaka 2fbc019c8c Issue #28439: Remove redundant checks in PyUnicode_EncodeLocale and
PyUnicode_DecodeLocaleAndSize.  Patch by Xiang Zhang.
2016-10-23 15:41:36 +03:00
Serhiy Storchaka f8d7d41507 Issue #28511: Use the "U" format instead of "O!" in PyArg_Parse*. 2016-10-23 15:12:25 +03:00
Serhiy Storchaka 523c449ca0 Issue #28504: Cleanup unicode_decode_call_errorhandler_wchar/writer.
Patch by Xiang Zhang.
2016-10-22 23:18:31 +03:00
Raymond Hettinger b12785d456 Reference the original compact-and-ordered proposal 2016-10-22 09:58:14 -07:00
Serhiy Storchaka c4b4d4e2d8 Issue #28214: Improved exception reporting for problematic __set_name__
attributes.
2016-10-21 17:15:20 +03:00
Serhiy Storchaka d5d32d2127 Issue #28214: Improved exception reporting for problematic __set_name__
attributes.
2016-10-21 17:13:31 +03:00
Serhiy Storchaka 14ab277632 Issue #28410: Added _PyErr_FormatFromCause() -- the helper for raising
new exception with setting current exception as __cause__.

_PyErr_FormatFromCause(exception, format, args...) is equivalent to Python

    raise exception(format % args) from sys.exc_info()[1]
2016-10-21 17:10:42 +03:00
Serhiy Storchaka 467ab194fc Issue #28410: Added _PyErr_FormatFromCause() -- the helper for raising
new exception with setting current exception as __cause__.

_PyErr_FormatFromCause(exception, format, args...) is equivalent to Python

    raise exception(format % args) from sys.exc_info()[1]
2016-10-21 17:09:17 +03:00
Benjamin Peterson d6d49f16f4 merge 3.6 (#28454) 2016-10-16 15:42:33 -07:00
Benjamin Peterson 3aa75528a1 merge 3.5 (#28454) 2016-10-16 15:42:24 -07:00
Benjamin Peterson 8d761ff045 remove extra PyErr_Format arguments (closes #28454)
Patch from Xiang Zhang.
2016-10-16 15:41:46 -07:00
Christian Heimes e590a03db7 Check return value of _PyDict_SetItemId() 2016-10-13 21:10:42 +02:00
Christian Heimes 5cade88ac1 Check return value of _PyDict_SetItemId() 2016-10-13 21:10:31 +02:00
Victor Stinner 5a33759fba Merge 3.6 2016-10-12 13:59:13 +02:00
Victor Stinner ebe17e0347 Fix _Py_normalize_encoding() command
It's not exactly the same than encodings.normalize_encoding(): the C function
also converts to lowercase.
2016-10-12 13:57:45 +02:00
Benjamin Peterson 8a3748290a merge 3.6 (#28417) 2016-10-11 23:01:12 -07:00
Benjamin Peterson b329e1bb5b va_end vargs2 once (closes #28417) 2016-10-11 23:00:58 -07:00
doko@ubuntu.com de69ee71e2 - dictobject.c: Make dict_merge symbol a static symbol 2016-10-11 08:04:02 +02:00
doko@ubuntu.com c96df68ea3 - dictobject.c: Make dict_merge symbol a static symbol 2016-10-11 08:04:02 +02:00
Serhiy Storchaka 2e58f1a52a Issue #28400: Removed uncessary checks in unicode_char and resize_copy.
1. In resize_copy we don't need to PyUnicode_READY(unicode) since when
it's not PyUnicode_WCHAR_KIND it should be ready.
2. In unicode_char, PyUnicode_1BYTE_KIND is handled by get_latin1_char.

Patch by Xiang Zhang.
2016-10-09 23:44:48 +03:00
Serhiy Storchaka 1aa85a9eea Merge from 3.6. 2016-10-09 23:08:58 +03:00
Serhiy Storchaka 49f5cdde1a Issue #28183: Optimize and cleanup dict iteration. 2016-10-09 23:08:05 +03:00
Serhiy Storchaka 74a7e3b981 Merge from 3.6. 2016-10-08 22:48:07 +03:00
Serhiy Storchaka 21d9f10c94 Merge from 3.5. 2016-10-08 22:46:01 +03:00
Serhiy Storchaka 9c0e1f83af Issue #28379: Added sanity checks and tests for PyUnicode_CopyCharacters().
Patch by Xiang Zhang.
2016-10-08 22:45:38 +03:00
Serhiy Storchaka df53392f0d Issue #28376: Creating instances of range_iterator by calling range_iterator
type now is disallowed.  Calling iter() on range instance is the only way.
Patch by Oren Milman.
2016-10-08 22:01:18 +03:00
Serhiy Storchaka aa078674e0 Merge with 3.6. 2016-10-08 21:52:41 +03:00
Serhiy Storchaka c7f490c8b1 Issue #28376: Creating instances of range_iterator by calling range_iterator
type now is deprecated.  Patch by Oren Milman.
2016-10-08 21:50:45 +03:00
Serhiy Storchaka 639098c591 Merge from 3.5. 2016-10-08 21:45:07 +03:00
Serhiy Storchaka 44759bcf13 Issue #28376: The constructor of range_iterator now checks that step is not 0.
Patch by Oren Milman.
2016-10-08 21:43:11 +03:00
Serhiy Storchaka a94ed55dbd Issue #26906: Resolving special methods of uninitialized type now causes
implicit initialization of the type instead of a fail.
2016-10-08 12:28:25 +03:00
Serhiy Storchaka 56588b7055 Issue #26906: Resolving special methods of uninitialized type now causes
implicit initialization of the type instead of a fail.
2016-10-08 12:26:25 +03:00
Serhiy Storchaka 8ef34600c7 Issue #26906: Resolving special methods of uninitialized type now causes
implicit initialization of the type instead of a fail.
2016-10-08 12:24:09 +03:00
Serhiy Storchaka 52597d91e2 Issue #18287: PyType_Ready() now checks that tp_name is not NULL.
Original patch by Niklas Koep.
2016-10-07 23:26:16 +03:00
Serhiy Storchaka e45b7c09ec Issue #18287: PyType_Ready() now checks that tp_name is not NULL.
Original patch by Niklas Koep.
2016-10-07 23:25:46 +03:00
Serhiy Storchaka de0574bdab Issue #18287: PyType_Ready() now checks that tp_name is not NULL.
Original patch by Niklas Koep.
2016-10-07 23:24:35 +03:00
INADA Naoki ecdd36ff88 Issue #28201: Dict reduces possibility of 2nd conflict in hash table.
Do perturb shift after first conflict.
2016-10-06 15:22:28 +09:00
INADA Naoki 267941c675 Issue #28201: Dict reduces possibility of 2nd conflict in hash table.
Do perturb shift after first conflict.
2016-10-06 15:19:07 +09:00
Serhiy Storchaka 7fd9f4b458 Merge heads 2016-10-04 18:23:55 +03:00
Serhiy Storchaka a67e5cad1d Issue #28350: String constants with null character no longer interned. 2016-10-04 18:21:53 +03:00
Serhiy Storchaka e81b0d335b Issue #28350: String constants with null character no longer interned. 2016-10-04 18:21:25 +03:00
Serhiy Storchaka 09f3d080fe Issue #28350: String constants with null character no longer interned. 2016-10-04 18:17:22 +03:00
Benjamin Peterson b983b8de9d merge 3.6 (#26617) 2016-10-04 00:00:35 -07:00
Benjamin Peterson 804480912c merge 3.5 (#26617) 2016-10-04 00:00:23 -07:00
Benjamin Peterson 8f657c35b9 ensure gc tracking is off when invoking weakref callbacks (closes #26617) 2016-10-04 00:00:02 -07:00
Serhiy Storchaka 2e84de3638 Issue #27358: Optimized merging var-keyword arguments and improved error
message when pass a non-mapping as a var-keyword argument.
2016-10-02 11:07:29 +03:00
Serhiy Storchaka e036ef8fa2 Issue #27358: Optimized merging var-keyword arguments and improved error
message when pass a non-mapping as a var-keyword argument.
2016-10-02 11:06:43 +03:00
Serhiy Storchaka be9cddb302 Issue #27942: String constants now interned recursively in tuples and frozensets. 2016-09-30 10:36:15 +03:00
Serhiy Storchaka 3738c2d8ae Issue #27942: String constants now interned recursively in tuples and frozensets. 2016-09-30 10:23:01 +03:00
Serhiy Storchaka 00a0fc1144 Issue #27942: String constants now interned recursively in tuples and frozensets. 2016-09-30 10:07:26 +03:00
Serhiy Storchaka e9e44484a5 Issue #28289: ImportError.__init__ now resets not specified attributes. 2016-09-28 07:53:32 +03:00
Serhiy Storchaka a6f035ee8d Issue #21578: Fixed misleading error message when ImportError called with
invalid keyword args.
2016-09-27 20:51:27 +03:00
Serhiy Storchaka 389ef9dcda Issue #21578: Fixed misleading error message when ImportError called with
invalid keyword args.
2016-09-27 20:51:04 +03:00
Serhiy Storchaka 47dee11ba7 Issue #21578: Fixed misleading error message when ImportError called with
invalid keyword args.
2016-09-27 20:45:35 +03:00
Serhiy Storchaka 60b270f44b Issue #27914: Fixed a comment in PyModule_ExcDef.
Patch by Xiang Zhang.
2016-09-26 23:15:04 +03:00
Serhiy Storchaka 333ad92ec2 Issue #27914: Fixed a comment in PyModule_ExcDef.
Patch by Xiang Zhang.
2016-09-26 23:14:44 +03:00
Serhiy Storchaka a9fc458b77 issue #28144: Decrease empty_keys_struct's dk_refcnt
since there is no dummy_struct any more.
Patch by Xiang Zhang.
2016-09-26 23:01:42 +03:00
Serhiy Storchaka 97932e4c4f issue #28144: Decrease empty_keys_struct's dk_refcnt
since there is no dummy_struct any more.
Patch by Xiang Zhang.
2016-09-26 23:01:23 +03:00
Serhiy Storchaka 9ac73c2052 Issue #28194: Clean up some checks in dict implementation.
Patch by Xiang Zhang.
2016-09-26 21:29:58 +03:00
Serhiy Storchaka 46825d2399 Issue #28194: Clean up some checks in dict implementation.
Patch by Xiang Zhang.
2016-09-26 21:29:34 +03:00
Mark Dickinson 3992d6e5e1 Issue #28203: Merge from 3.6 2016-09-24 15:29:07 +01:00
Mark Dickinson 6997946ec4 Issue #28203: Merge from 3.5 2016-09-24 15:28:34 +01:00
Mark Dickinson 613f8e513c Issue #28203: Fix incorrect type in error message from complex(1.0, {2:3}). Patch by Soumya Sharma. 2016-09-24 15:26:36 +01:00
Benjamin Peterson 40b41fa531 merge 3.6 2016-09-22 23:40:08 -07:00
Benjamin Peterson 7b7228a709 remove unneeded cast 2016-09-22 23:39:59 -07:00
Serhiy Storchaka cf4fb40b9d Issue #28214: Now __set_name__ is looked up on the class instead of the
instance.
2016-09-21 15:55:49 +03:00
Serhiy Storchaka afd02a439f Issue #28214: Now __set_name__ is looked up on the class instead of the
instance.
2016-09-21 15:54:59 +03:00
Victor Stinner 71276144bd Merge 3.6 2016-09-21 14:14:59 +02:00
Victor Stinner 44f4874e68 Merge 3.5 2016-09-21 14:13:53 +02:00
Victor Stinner 1ddf53d496 Fix PyUnicode_FromFormatV() error handling
Issue #28233: Fix a memory leak if the format string contains a non-ASCII
character, destroy the unicode writer.
2016-09-21 14:13:14 +02:00
Christian Heimes e5ad75e242 va_end() all va_copy()ed va_lists. 2016-09-21 11:37:38 +02:00
Christian Heimes 2f2fee19ec va_end() all va_copy()ed va_lists. 2016-09-21 11:37:27 +02:00
Benjamin Peterson 637d1e2b0a merge 3.6 2016-09-20 20:39:44 -07:00
Benjamin Peterson 0c21214f3e replace usage of Py_VA_COPY with the (C99) standard va_copy 2016-09-20 20:39:33 -07:00
Raymond Hettinger 2113c6e41b merge 2016-09-18 21:46:34 -07:00
Raymond Hettinger 6692f01c91 merge 2016-09-18 21:46:08 -07:00
Raymond Hettinger 7eb1becc25 Issue #28189: dictitems_contains no longer swallows compare errors.
(Patch by Xiang Zhang)
2016-09-18 21:45:11 -07:00
Benjamin Peterson f820836e6c merge 3.6 2016-09-18 19:25:00 -07:00
Benjamin Peterson 5d4b09c106 correct silly spelling problem 2016-09-18 19:24:52 -07:00
Benjamin Peterson beb6cf6822 merge 3.6 2016-09-18 19:22:27 -07:00
Benjamin Peterson 19517e4da7 replace obmalloc's homegrown uptr and uchar types with standard ones 2016-09-18 19:22:22 -07:00
Benjamin Peterson 630783d811 merge 3.6 2016-09-18 19:19:38 -07:00
Benjamin Peterson 3924f93794 improvements to code that checks whether Python (obmalloc) allocated an address
- Rename Py_ADDRESS_IN_RANGE to address_in_range and make it a static
  function instead of macro. Any compiler worth its salt will inline this
  function.
- Remove the duplicated function version of Py_ADDRESS_IN_RANGE used when memory
  analysis was active. Instead, we can simply mark address_in_range as allergic
  to dynamic memory checking. We can now remove the
  __attribute__((no_address_safety_analysis)) from _PyObject_Free and
  _PyObject_Realloc. All the badness is contained in address_in_range now.
- Fix the code that tried to only read pool->arenaindex once. Putting something
  in a variable is no guarantee that it won't be read multiple times. We must
  use volatile for that.
2016-09-18 19:12:48 -07:00
Mark Dickinson c1c4a64edb Issue #27111: Minor simplication to long_add and long_sub fast path code. Thanks Oren Milman. 2016-09-17 20:01:56 +01:00
Mark Dickinson fba121fe9d Issue #27441: Remove some redundant assignments to ob_size in longobject.c. Thanks Oren Milman. 2016-09-17 19:44:13 +01:00
Mark Dickinson 92ca535626 Issue #27222: various cleanups in long_rshift. Thanks Oren Milman. 2016-09-17 17:50:50 +01:00
Martin Panter d508d00919 Issue #28139: Merge indentation fixes from 3.5 into 3.6 2016-09-17 07:59:14 +00:00
Martin Panter 6d57fe1c23 Issue #28139: Fix messed up indentation
Also update the classmethod and staticmethod doc strings and comments to
match the RST documentation.
2016-09-17 03:26:16 +00:00
Berker Peksag 7b4bcd2004 Issue #25270: Merge from 3.5 2016-09-16 17:32:06 +03:00
Berker Peksag 4a72a7b6c4 Issue #25270: Prevent codecs.escape_encode() from raising SystemError when an empty bytestring is passed 2016-09-16 17:31:06 +03:00
Benjamin Peterson 6775231597 Unicode 9.0.0
Not completely mechanical since support for East Asian Width changes—emoji
codepoints became Wide—had to be added to unicodedata.
2016-09-14 23:53:47 -07:00
Victor Stinner 611b0fa94c Add _PyDict_CheckConsistency()
Issue #28127: Add a function to check that a dictionary remains consistent
after any change.

By default, tables are not checked, only basic attributes. Define DEBUG_PYDICT
(ex: gcc -D DEBUG_PYDICT) to also check dictionary "content".
2016-09-14 15:02:01 +02:00
Christian Heimes f051e43b22 Issue #28126: Replace Py_MEMCPY with memcpy(). Visual Studio can properly optimize memcpy(). 2016-09-13 20:22:02 +02:00
Victor Stinner d0ad11f6b4 Fix _PyDict_Pop() on pending key
Issue #28120: Fix dict.pop() for splitted dictionary when trying to remove a
"pending key" (Not yet inserted in split-table).

Patch by Xiang Zhang.
2016-09-13 16:56:38 +02:00
Victor Stinner 9926480b6a Issue #28040: Cleanup find_empty_slot()
find_empty_slot() only supports combined dict
2016-09-13 09:38:29 +02:00
Victor Stinner 476bd5ea97 Fix warning in _PyCFunction_FastCallKeywords()
Issue #28105.
2016-09-12 15:33:26 -04:00
Victor Stinner 3c336c5915 Issue #28077: find_empty_slot() only supports combined dict 2016-09-12 14:17:40 +02:00
Victor Stinner 57f91ac95a Document kwnames in _PyObject_FastCallKeywords() and _PyStack_AsDict()
Issue #27213.
2016-09-12 13:37:07 +02:00
Victor Stinner b8d768b019 Revert change f860b7a775c5
Revert change "Issue #27213: Reintroduce checks in _PyStack_AsDict()", pushed
by mistake.
2016-09-12 13:30:02 +02:00
Victor Stinner b1e169bf4b ssue #27213: Reintroduce checks in _PyStack_AsDict() 2016-09-12 12:55:28 +02:00
Raymond Hettinger 4103e4dfbc Issue #28071: Add early-out for differencing from an empty set. 2016-09-11 22:02:28 -07:00
Berker Peksag 1d7feab78a Issue #28045: Merge from 3.5 2016-09-12 07:47:33 +03:00
Berker Peksag ed6224ee0c Issue #28045: Fix comment in range_contains_long()
Patch by wim glenn.
2016-09-12 07:47:04 +03:00
Serhiy Storchaka b72810583e Issue #27213: Fixed different issues with reworked CALL_FUNCTION* opcodes.
* BUILD_TUPLE_UNPACK and BUILD_MAP_UNPACK_WITH_CALL no longer generated with
  single tuple or dict.
* Restored more informative error messages for incorrect var-positional and
  var-keyword arguments.
* Removed code duplications in _PyEval_EvalCodeWithName().
* Removed redundant runtime checks and parameters in _PyStack_AsDict().
* Added a workaround and enabled previously disabled test in test_traceback.
* Removed dead code from the dis module.
2016-09-12 00:52:40 +03:00
Serhiy Storchaka ab8740058a Issue #27129: Replaced wordcode related magic constants with macros. 2016-09-11 13:48:15 +03:00
Nick Coghlan 944368e1cc Issue #23722: Initialize __class__ from type.__new__()
The __class__ cell used by zero-argument super() is now initialized
from type.__new__ rather than __build_class__, so class methods
relying on that will now work correctly when called from metaclass
methods during class creation.

Patch by Martin Teichmann.
2016-09-11 14:45:49 +10:00
Mark Dickinson 82cb124300 Issue #25221: merge from 3.5. 2016-09-10 20:20:08 +01:00
Mark Dickinson 36820dd5a9 Issue #25221: Fix corrupted result from PyLong_FromLong(0) when Python is compiled with NSMALLPOSINTS = 0. 2016-09-10 20:17:36 +01:00
Serhiy Storchaka 473e0e4dba Fixed compiler warnings in compact dict implementation on 32-bit platforms. 2016-09-10 21:34:43 +03:00
Victor Stinner 990397ef1e dictobject.c: explain why stringlib is used 2016-09-09 20:22:59 -07:00
Victor Stinner 37e4ef7b17 Issue #27810: Rerun Argument Clinic on all modules 2016-09-09 20:00:13 -07:00
Victor Stinner a9efb2f56e Add METH_FASTCALL calling convention
Issue #27810: Add a new calling convention for C functions:

    PyObject* func(PyObject *self, PyObject **args,
                   Py_ssize_t nargs, PyObject *kwnames);

Where args is a C array of positional arguments followed by values of keyword
arguments. nargs is the number of positional arguments, kwnames are keys of
keyword arguments. kwnames can be NULL.
2016-09-09 17:40:22 -07:00
Victor Stinner 78601a38c2 Fix SystemError in compact dict
Issue #28040: Fix _PyDict_DelItem_KnownHash() and _PyDict_Pop(): convert
splitted table to combined table to be able to delete the item.

Write an unit test for the issue.

Patch by INADA Naoki.
2016-09-09 19:28:36 -07:00
Brett Cannon a721abac29 Issue #26331: Implement the parsing part of PEP 515.
Thanks to Georg Brandl for the patch.
2016-09-09 14:57:09 -07:00
Serhiy Storchaka 7c19affdce Issue #25856: The __module__ attribute of extension classes and functions
now is interned. This leads to more compact pickle data with protocol 4.
2016-09-10 00:53:02 +03:00
Victor Stinner ae8b69c410 Issue #27810: Add _PyCFunction_FastCallKeywords()
Use _PyCFunction_FastCallKeywords() in ceval.c: it allows to remove a lot of
code from ceval.c which was only used to call C functions.
2016-09-09 14:07:44 -07:00
Benjamin Peterson 621b430a14 remove all usage of Py_LOCAL 2016-09-09 13:54:34 -07:00
Victor Stinner d873572095 Add _PyObject_FastCallKeywords()
Issue #27830: Add _PyObject_FastCallKeywords(): avoid the creation of a
temporary dictionary for keyword arguments.

Other changes:

* Cleanup call_function() and fast_function() (ex: rename nk to nkwargs)
* Remove now useless do_call(), replaced with _PyObject_FastCallKeywords()
2016-09-09 12:36:44 -07:00
Benjamin Peterson 6cb526e54d remove unconvincing use of Py_LOCAL 2016-09-09 12:42:51 -07:00
Eric Snow 06aed90a1f Issue #27576: Fix call order in OrderedDict.__init__(). 2016-09-09 11:59:08 -07:00
Yury Selivanov eb6364557f Issue #28003: Implement PEP 525 -- Asynchronous Generators. 2016-09-08 22:01:51 -07:00
Berker Peksag 71c01d43a7 Issue #28033: Fix typo in dictobject.c
Patch by Wesley Emeneker.
2016-09-09 03:57:23 +03:00
Eric Snow 4f29e75289 Issue #24254: Drop cls.__definition_order__. 2016-09-08 15:11:11 -07:00
Christian Heimes 07a2a1b7e5 Additional safe-guard against dereferencing NULL in reduce_newobj
_PyObject_GetNewArguments() can leave args == NULL but the __newobj_ex__
branch expects args to be not-NULL.

CID 1353201
2016-09-09 00:21:22 +02:00
Christian Heimes 884332b45a Add NULL check for gen->gi_code in gen_send_ex()
_PyGen_Finalize() checks that gen->gi_code is not NULL before it
accesses the flags of the code object. This means that the flag
could be NULL.

It passes down the generatore to gen_close() and gen_send_ex().
gen_send_ex() did not check for gen->gi_code != NULL.

CID 1297900
2016-09-09 00:20:13 +02:00
Martin Panter 0be894b2f6 Issue #27895: Spelling fixes (Contributed by Ville Skyttä). 2016-09-07 12:03:06 +00:00
Benjamin Peterson b88db8745b supress coroutine warning when an exception is pending (#27968) 2016-09-07 08:46:59 -07:00
Benjamin Peterson 33d2a492d0 promote some shifts to unsigned, so as not to invoke undefined behavior 2016-09-06 20:40:04 -07:00
Benjamin Peterson 5a7d923e75 make sure to not call memcpy with a NULL second argument 2016-09-06 17:58:25 -07:00
Benjamin Peterson bdddb11b0e clear out f_gen during generator finalization (closes #27812)
Patch from Armin Rigo.
2016-09-05 10:39:57 -07:00
Benjamin Peterson 2f40ed4b94 do not allow _PyGen_Finalize to fail (closes #27811)
Patch from Armin Rigo.
2016-09-05 10:14:54 -07:00
Benjamin Peterson 3c569295d6 do not worry about 64-bit dict sizes on 32-bit platforms 2016-09-08 13:16:41 -07:00
Victor Stinner 3b6a6b4215 Add a new private version to the builtin dict type
Issue #26058: Add a new private version to the builtin dict type, incremented
at each dictionary creation and at each dictionary change.

Implementation of the PEP 509.
2016-09-08 12:51:24 -07:00
R David Murray 110b6fecbb #27364: Deprecate invalid escape strings in str/byutes.
Patch by Emanuel Barry, reviewed by Serhiy Storchaka and Martin Panter.
2016-09-08 15:34:08 -04:00
Benjamin Peterson 186122ead2 access dk_indices through a union 2016-09-08 12:20:12 -07:00
Victor Stinner a4348cc1be Add documentation to the dict implementation
Issue #27350.
2016-09-08 12:01:25 -07:00
Victor Stinner 58f7c5a955 Reindeint DK_xxx macros
Issue #27350.
2016-09-08 11:37:36 -07:00
Victor Stinner 208857ec33 dk_get_index/dk_set_index uses a type indices variable
Issue #27350.
2016-09-08 11:35:46 -07:00
Benjamin Peterson 82cce4c5ef use static inline instead of Py_LOCAL_INLINE 2016-09-08 11:56:06 -07:00
Victor Stinner dee6e252cc Split lookdict_unicode_nodummy() assertion to debug
Issue #27350.
2016-09-08 11:16:07 -07:00
Benjamin Peterson ee178e6d6e fix spelling 2016-09-08 11:08:30 -07:00
Victor Stinner 71211e3386 Add assertions to dk_set_index()
Issue #27350.
2016-09-08 10:52:46 -07:00
Steve Dower cc16be85c0 Issue #27781: Change file system encoding on Windows to UTF-8 (PEP 529) 2016-09-08 10:35:16 -07:00
Benjamin Peterson 003f059b3a link to canonical blogspot 2016-09-08 10:14:31 -07:00
Benjamin Peterson 7322225a57 use native inline instead of Py_LOCAL_INLINE 2016-09-08 09:58:47 -07:00
Benjamin Peterson f0acae2d3c rearrange to make gcc happy 2016-09-08 09:50:08 -07:00
Victor Stinner 98ee9d5b73 Add Py_MEMBER_SIZE macro
Issue #27350: use Py_MEMBER_SIZE() macro to get the size of
PyDictKeyEntry.dk_indices, rather than hardcoding 8.
2016-09-08 09:33:56 -07:00
Victor Stinner 742da040db Implement compact dict
Issue #27350: `dict` implementation is changed like PyPy. It is more compact
and preserves insertion order.

_PyDict_Dummy() function has been removed.

Disable test_gdb: python-gdb.py is not updated yet to the new structure of
compact dictionaries (issue #28023).

Patch written by INADA Naoki.
2016-09-07 17:40:12 -07:00
Benjamin Peterson 47ff0734b8 more PY_LONG_LONG to long long 2016-09-08 09:15:54 -07:00
Eric Snow c943265ba5 Issue #15767: Add ModuleNotFoundError. 2016-09-07 15:42:32 -07:00
Benjamin Peterson 2e7c5e9c11 replace some Py_LOCAL_INLINE with the inline keyword 2016-09-07 15:33:32 -07:00
Brett Cannon d0600ed524 Make PyCodeObject.co_extra even more private to force users through the proper API. 2016-09-07 14:30:39 -07:00
Benjamin Peterson d39206a78c use c++ style comments 2016-09-07 14:12:36 -07:00
Brett Cannon 3788b85628 Change error return value to be more consistent with the rest of Python 2016-09-07 12:51:08 -07:00
Benjamin Peterson 1bf494b0ec use a the bool type for a boolean variable 2016-09-07 11:28:35 -07:00
Brett Cannon 5c4de2863b Add the co_extra field and accompanying APIs to code objects.
This completes PEP 523.
2016-09-07 11:16:41 -07:00
Benjamin Peterson a9296e7f3b require C99 bool 2016-09-07 11:06:17 -07:00
Benjamin Peterson 2f8bfef158 replace PY_SIZE_MAX with SIZE_MAX 2016-09-07 09:26:18 -07:00
Benjamin Peterson 9d2617bec0 merge 3.5 (#27968) 2016-09-07 08:47:18 -07:00
Benjamin Peterson 4b9abf3a27 merge 3.5 2016-09-06 20:42:17 -07:00
Brett Cannon a571120410 Issue #27182: Add support for path-like objects to PyUnicode_FSDecoder(). 2016-09-06 19:36:01 -07:00
Benjamin Peterson 05448a62ae merge 3.5 2016-09-06 17:58:44 -07:00
Victor Stinner 62ec3317d2 Optimize unicode_escape and raw_unicode_escape
Issue #16334. Patch written by Serhiy Storchaka.
2016-09-06 17:04:34 -07:00
Victor Stinner 2740e46089 _PyUnicodeWriter: assert that max character <= MAX_UNICODE 2016-09-06 16:58:36 -07:00
Brett Cannon ec6ce879c7 Issue #26027: Support path-like objects in PyUnicode-FSConverter().
This is to add support for os.exec*() and os.spawn*() functions. Part
of PEP 519.
2016-09-06 15:50:29 -07:00
Benjamin Peterson ca47063998 replace Py_(u)intptr_t with the c99 standard types 2016-09-06 13:47:26 -07:00
Benjamin Peterson 9b3d77052f replace Python aliases for standard integer types with the standard integer types (#17884) 2016-09-06 13:24:00 -07:00
Serhiy Storchaka ea525a2d1a Issue #27078: Added BUILD_STRING opcode. Optimized f-strings evaluation. 2016-09-06 22:07:53 +03:00
Benjamin Peterson d953f8e10b remove some silly defined() tests 2016-09-06 10:51:19 -07:00
Benjamin Peterson af580dff4a replace PY_LONG_LONG with long long 2016-09-06 10:46:49 -07:00
Victor Stinner 3466bde1cc Avoid calling functions with an empty string as format string
Directly pass NULL rather than an empty string.
2016-09-05 18:16:01 -07:00
Victor Stinner ad8c83ad6b Avoid inefficient way to call functions without argument
Don't pass "()" format to PyObject_CallXXX() to call a function without
argument: pass NULL as the format string instead. It avoids to have to parse a
string to produce 0 argument.
2016-09-05 17:53:15 -07:00
Benjamin Peterson ed4aa83ff7 require a long long data type (closes #27961) 2016-09-05 17:44:18 -07:00
Victor Stinner 942889aae2 Issue #27938: Add a fast-path for us-ascii encoding
Other changes:

* Rewrite _Py_normalize_encoding() as a C implementation of
  encodings.normalize_encoding(). For example, " utf-8 " is now normalized to
  "utf_8". So the fast path is now used for more name variants of the same
  encoding.
* Avoid strcpy() when encoding is NULL: call directly the UTF-8 codec
2016-09-05 15:40:10 -07:00
Eric Snow 92a6c170e6 Issue #24254: Preserve class attribute definition order. 2016-09-05 14:50:11 -07:00
Benjamin Peterson 55f445282d remove memory indirections in dict_traverse (closes #27956) 2016-09-05 12:12:59 -07:00
Victor Stinner 2250c4cb81 Issue #27830: Remove unused _PyStack_AsDict()
I forgot to remove this function, I made a mistake in my revert.
2016-09-05 11:43:18 -07:00
Benjamin Peterson 7b24b27302 merge 3.5 (#27812) 2016-09-05 10:40:34 -07:00
Benjamin Peterson 98020812e6 merge 3.5 (closes #27811) 2016-09-05 10:16:31 -07:00
Mark Dickinson 7c4e409d07 Issue #11734: Add support for IEEE 754 half-precision floats to the struct module. Original patch by Eli Stevens. 2016-09-03 17:21:29 +01:00
Victor Stinner 1a05d6c04d PEP 7 style for if/else in C
Add also a newline for readability in normalize_encoding().
2016-09-02 12:12:23 +02:00
Raymond Hettinger 15f44ab043 Issue #27895: Spelling fixes (Contributed by Ville Skyttä). 2016-08-30 10:47:49 -07:00
Mark Dickinson 82a95277b8 Issue #27870: A left shift of zero by a large integer no longer attempts to allocate large amounts of memory. 2016-08-29 19:27:06 +01:00
Mark Dickinson 4e1de16f88 Issue #25402: in int-to-decimal-string conversion, reduce intermediate storage requirements and relax restriction on converting large integers. Patch by Serhiy Storchaka. 2016-08-29 17:26:43 +01:00
Mark Dickinson 583c6e860c Issue #27214: Fix potential bug and remove useless optimization in long_invert. Thanks Oren Milman. 2016-08-29 16:40:29 +01:00
Martin Panter 1b6c6da85d Issue #27506: Support bytes/bytearray.translate() delete as keyword argument
Patch by Xiang Zhang.
2016-08-27 08:35:02 +00:00
Raymond Hettinger f74c33ad5c Merge 2016-08-25 21:12:16 -07:00
Raymond Hettinger 7ea386e56e Issue 19504: Change "customise" to "customize" American spelling. 2016-08-25 21:11:50 -07:00
Victor Stinner e90bdb19f2 Issue #27830: Revert, remove _PyFunction_FastCallKeywords() 2016-08-25 23:26:50 +02:00
Victor Stinner 3f1057a4b6 method_call() and slot_tp_new() now uses fast call
Issue #27841: Add _PyObject_Call_Prepend() helper function to prepend an
argument to existing arguments to call a function. This helper uses fast calls.

Modify method_call() and slot_tp_new() to use _PyObject_Call_Prepend().
2016-08-25 01:04:14 +02:00
Victor Stinner f7507dd3e8 Issue #27830: Fix _PyObject_FastCallKeywords()
Pass stack, not unrelated and uninitialized args!
2016-08-25 01:00:31 +02:00
Victor Stinner 53cb489ed0 _PyObject_FastCallDict(): avoid _Py_CheckFunctionResult()
_PyObject_FastCallDict() only requires _Py_CheckFunctionResult() for the
slow-path. Other cases already check for the result.
2016-08-25 00:39:34 +02:00
Victor Stinner 577e1f8cb4 Add _PyObject_FastCallKeywords()
Issue #27830: Similar to _PyObject_FastCallDict(), but keyword arguments are
also passed in the same C array than positional arguments, rather than being
passed as a Python dict.
2016-08-25 00:29:32 +02:00
Victor Stinner 74319ae219 Use Py_ssize_t type for number of arguments
Issue #27848: use Py_ssize_t rather than C int for the number of function
positional and keyword arguments.
2016-08-25 00:04:09 +02:00
Victor Stinner dd69564c38 PyObject_CallMethodObjArgs() now uses fast call
Issue #27809:

* PyObject_CallMethodObjArgs(), _PyObject_CallMethodIdObjArgs() and
  PyObject_CallFunctionObjArgs() now use fast call to avoid the creation of a
  temporary tuple
* Rename objargs_mktuple() to objargs_mkstack()
* objargs_mkstack() now stores objects in a C array using borrowed references,
  instead of storing arguments into a tuple

objargs_mkstack() uses a small buffer allocated on the C stack for 5 arguments
or less, or allocates a buffer in the heap memory.

Note: this change is different than the change 0e4f26083bbb, I fixed the test
to decide if the small stack can be used or not. sizeof(PyObject**) was also
replaced with sizeof(stack[0]) since the sizeof() was wrong (but gave the same
result).
2016-08-24 01:14:54 +02:00
Victor Stinner d48af09043 Backed out changeset 0e4f26083bbb (PyObject_CallMethodObjArgs) 2016-08-24 00:59:40 +02:00
Victor Stinner e62b852605 PyObject_CallMethodObjArgs() now uses fast call
Issue #27809:

* PyObject_CallMethodObjArgs(), _PyObject_CallMethodIdObjArgs() and
  PyObject_CallFunctionObjArgs() now use fast call to avoid the creation of a
  temporary tuple
* Rename objargs_mktuple() to objargs_mkstack()
* objargs_mkstack() now stores objects in a C array using borrowed references,
  instead of storing arguments into a tuple

objargs_mkstack() uses a small buffer allocated on the C stack for 5 arguments
or less, or allocates a buffer in the heap memory.
2016-08-24 00:01:56 +02:00
Victor Stinner 463b86a881 Issue #27809: Use _PyObject_FastCallDict()
Modify:

* init_subclass()
* builtin___build_class__()

Fix also a bug in init_subclass(): check for super() failure.
2016-08-22 23:33:13 +02:00
Victor Stinner 2990fa11bc Issue #27809: Use _PyObject_FastCallDict()
Modify:

* builtin_sorted()
* classmethoddescr_call()
* methoddescr_call()
* wrapperdescr_call()
2016-08-22 23:21:55 +02:00
Victor Stinner b900939186 _PyFunction_FastCallDict() supports keyword args
Issue #27809:

* Rename _PyFunction_FastCall() to _PyFunction_FastCallDict()
* Rename _PyCFunction_FastCall() to _PyCFunction_FastCallDict()
*  _PyFunction_FastCallDict() now supports keyword arguments
2016-08-22 23:15:44 +02:00
Victor Stinner 559bb6a713 Rename _PyObject_FastCall() to _PyObject_FastCallDict()
Issue #27809:

* Rename _PyObject_FastCall() function to _PyObject_FastCallDict()
* Add _PyObject_FastCall(), _PyObject_CallNoArg() and _PyObject_CallArg1()
  macros calling _PyObject_FastCallDict()
2016-08-22 22:48:54 +02:00
Mark Dickinson b820d7f631 Issue #27792: force int return type for modulo operations involving bools. 2016-08-22 12:24:46 +01:00
Serhiy Storchaka 54cd1969ea Issue #26984: int() now always returns an instance of exact int. 2016-08-21 20:03:08 +03:00
Mark Dickinson 1dc3c898a8 Untabify Objects/longobject.c. 2016-08-21 10:33:36 +01:00
Mark Dickinson dc590a4cc3 Issue #25604: Fix minor bug in integer true division, which could
have caused off-by-one-ulp results on certain platforms.
2016-08-21 10:23:23 +01:00
Mark Dickinson 5d13238f6e Issue #27662: don't use PY_SIZE_MAX for overflow checking in List_New. Patch by Xiang Zhang. 2016-08-21 08:55:15 +01:00
Nick Coghlan cbcd221de4 Merge #27782 fix from 3.5 2016-08-21 17:43:58 +10:00
Nick Coghlan 8682f578c1 Issue #27782: Fix m_methods handling in multiphase init
Multi-phase extension module import now correctly allows the
``m_methods`` field to be used to add module level functions
to instances of non-module types returned from ``Py_create_mod``.

Patch by Xiang Zhang.
2016-08-21 17:41:56 +10:00
Serhiy Storchaka 3766572a48 Issue #27692: Removed unnecessary NULL checks in exceptions.c.
Patch by Xiang Zhang.
2016-08-20 21:22:03 +03:00
Victor Stinner 253021dd94 Issue #27366: Fix init_subclass()
Handle PyTuple_New(0) failure.
2016-08-20 02:37:41 +02:00
Victor Stinner 9def0901e2 PyFile_WriteObject() now uses fast call
Issue #27128: PyFile_WriteObject() now calls _PyObject_FastCall() to avoid the
creation of a temporary tuple.
2016-08-20 00:44:04 +02:00
Victor Stinner 99ee9c70a7 calliter_iternext() now uses fast call
Issue #27128: calliter_iternext() now calls _PyObject_FastCall() to avoid a
temporary empty tuple.

Cleanup also the code to reduce the indentation level.
2016-08-19 18:47:10 +02:00
Victor Stinner 6911267615 slot_tp_iter() now uses fast call
Issue #27128: slot_tp_iter() now calls _PyObject_FastCall() to avoid a
temporary empty tuple.
2016-08-19 18:41:02 +02:00
Victor Stinner 20a3007a8d slot_nb_bool() now uses fast call
Issue #27128: slot_nb_bool() now calls _PyObject_FastCall() to avoid a
temporary empty tuple to call the slot function.
2016-08-19 18:28:25 +02:00
Victor Stinner a12eec48b6 Issue #27128: Cleanup slot_nb_bool()
Use an error label to reduce the level of indentation.
2016-08-19 18:26:05 +02:00
Victor Stinner 5e87749a8e Issue #27128: slot_sq_item() uses fast call
slot_sq_item() now calls _PyObject_FastCall() to avoid the creation of a
temporary tuple of 1 item to pass the 'item' argument to the slot function.
2016-08-19 18:19:42 +02:00
Victor Stinner 018016d8e3 Issue #27128: Cleanup slot_sq_item()
* Invert condition of test to avoid levels of indentation
* Remove useless Py_XDECREF(args) in the error block
* Replace Py_XDECREF(func) with Py_DECREF(func) in the error block: func cannot
  be NULL when reaching the error block
2016-08-19 18:17:37 +02:00
Victor Stinner f736c261a2 call_method() and call_maybe() now use fast call
Issue #27128. The call_method() and call_maybe() functions of typeobject.c now
use fast call for empty format string to avoid the creation of a temporary
empty tuple.
2016-08-19 18:05:37 +02:00
Victor Stinner 94463c980e Cleanup call_method() and call_maybe()
Issue #27128. Move va_start/va_end around Py_VaBuildValue().
2016-08-19 18:01:41 +02:00
Victor Stinner 56142c701b Merge 3.5 (fix refleak in call_maybe()) 2016-08-19 17:58:30 +02:00
Victor Stinner 6902ddf2ca Fix a refleak in call_maybe()
Issue #27128. Fix a reference leak if creating the tuple to pass positional
parameters fails.
2016-08-19 17:58:12 +02:00
Victor Stinner 59e9ca6bda Merge 3.5 (fix refleak in call_method) 2016-08-19 17:52:08 +02:00
Victor Stinner d925bd5794 Fix a refleak in call_method()
Issue #27128. Fix a reference leak if creating the tuple to pass positional
parameters fails.
2016-08-19 17:51:49 +02:00
Victor Stinner a7720f61aa contains and rich compare slots use fast call
Issue #27128. Modify slot_sq_contains() and slot_tp_richcompare() to use fast
call to avoid a temporary tuple to pass a single positional parameter.
2016-08-19 17:48:51 +02:00
Victor Stinner 8a31c82093 Fix PyObject_Call() parameter names
Issue #27128: arg=>args, kw=>kwargs.

Same change for PyEval_CallObjectWithKeywords().
2016-08-19 17:12:23 +02:00
Victor Stinner 0d1a799343 Avoid call_function_tail() for empty format str
Issue #27128, PyObject_CallFunction(), _PyObject_FastCall() and callmethod():
if the format string of parameters is empty, avoid the creation of an empty
tuple: call _PyObject_FastCall() without parameters.
2016-08-19 17:04:54 +02:00