Commit Graph

91771 Commits

Author SHA1 Message Date
Victor Stinner 2ec8063cc9 Modify _PyBytes_DecodeEscapeRecode() to use _PyBytesAPI
* Don't overallocate by 400% when recode is needed: only overallocate on demand
  using _PyBytesWriter.
* Use _PyLong_DigitValue to convert hexadecimal digit to int
* Create _PyBytes_DecodeEscapeRecode() subfunction
2015-10-14 13:32:13 +02:00
Victor Stinner 1285e5c805 Fix compiler warnings (uninitialized variables), false alarms in fact 2015-10-14 12:10:20 +02:00
Victor Stinner f6358a7e4c _PyBytesWriter_Alloc(): only use 10 bytes of the small buffer in debug mode to
enhance code to detect buffer under- and overflow.
2015-10-14 12:02:39 +02:00
Victor Stinner f091033b14 Issue #25401: Remove now unused hex_digit_to_int() function 2015-10-14 11:59:46 +02:00
Victor Stinner 2bf8993db9 Optimize bytes.fromhex() and bytearray.fromhex()
Issue #25401: Optimize bytes.fromhex() and bytearray.fromhex(): they are now
between 2x and 3.5x faster. Changes:

* Use a fast-path working on a char* string for ASCII string
* Use a slow-path for non-ASCII string
* Replace slow hex_digit_to_int() function with a O(1) lookup in
  _PyLong_DigitValue precomputed table
* Use _PyBytesWriter API to handle the buffer
* Add unit tests to check the error position in error messages
2015-10-14 11:25:33 +02:00
Victor Stinner ebcf9edc05 Document latest optimizations using _PyBytesWriter 2015-10-14 10:10:00 +02:00
Victor Stinner 772b2b09f2 Optimize bytearray % args
Issue #25399: Don't create temporary bytes objects: modify _PyBytes_Format() to
create work directly on bytearray objects.

* Rename _PyBytes_Format() to _PyBytes_FormatEx() just in case if something
  outside CPython uses it
* _PyBytes_FormatEx() now uses (char*, Py_ssize_t) for the input string, so
  bytearray_format() doesn't need tot create a temporary input bytes object
* Add use_bytearray parameter to _PyBytes_FormatEx() which is passed to
  _PyBytesWriter, to create a bytearray buffer instead of a bytes buffer

Most formatting operations are now between 2.5 and 5 times faster.
2015-10-14 09:56:53 +02:00
Victor Stinner 661aaccf9d Add use_bytearray attribute to _PyBytesWriter
Issue #25399: Add a new use_bytearray attribute to _PyBytesWriter to use a
bytearray buffer, instead of using a bytes object.
2015-10-14 09:41:48 +02:00
Victor Stinner 199c9a6f4b Fix long_format_binary()
Issue #25399: Fix long_format_binary(), allocate bytes for the bytes writer.
2015-10-14 09:47:23 +02:00
Terry Jan Reedy 8c737d280b Merge with 3.5 2015-10-13 22:09:34 -04:00
Terry Jan Reedy c1e98de7be Merge with 3.4 2015-10-13 22:09:19 -04:00
Terry Jan Reedy b2f87608d1 Issue #24782: whitespace 2015-10-13 22:09:06 -04:00
Terry Jan Reedy 8533a21117 Merge with 3.5 2015-10-13 22:04:22 -04:00
Terry Jan Reedy 447169f6da Merge with 3.4 2015-10-13 22:04:07 -04:00
Terry Jan Reedy 93f3542ae4 Issue #24782: Finish converting the Configure Extension dialog into a new
tab in the IDLE Preferences dialog.  Code patch by Mark Roseman.
2015-10-13 22:03:51 -04:00
Victor Stinner 7ab986dd84 Fix test_bytes on Windows
On Windows, sprintf("%p", 0xabcdef) formats hexadecimal in uppercase and pad to
16 characters (on 64-bit system) with zeros.
2015-10-14 02:55:12 +02:00
Victor Stinner 03dab786b2 Rewrite PyBytes_FromFormatV() using _PyBytesWriter API
* Add much more unit tests on PyBytes_FromFormatV()
* Remove the first loop to compute the length of the output string
* Use _PyBytesWriter to handle the bytes buffer, use overallocation
* Cleanup the code to make simpler and easier to review
2015-10-14 00:21:35 +02:00
Serhiy Storchaka b6d84832bf Issue #24164: Document changes to __getnewargs__ and __getnewargs_ex__. 2015-10-13 21:26:35 +03:00
Serhiy Storchaka dbc517c2dd Issue #25382: pickletools.dis() now outputs implicit memo index for the
MEMOIZE opcode.
2015-10-13 21:20:14 +03:00
Serhiy Storchaka ca77aef31b Issue #25380: Fixed protocol for the STACK_GLOBAL opcode in
pickletools.opcodes.
2015-10-13 21:14:01 +03:00
Serhiy Storchaka 5a8bbc5f2a Issue #25380: Fixed protocol for the STACK_GLOBAL opcode in
pickletools.opcodes.
2015-10-13 21:13:34 +03:00
Serhiy Storchaka 5805ddeedb Issue #25380: Fixed protocol for the STACK_GLOBAL opcode in
pickletools.opcodes.
2015-10-13 21:12:32 +03:00
Victor Stinner eaaaf136d2 Issue #25384: Use _PyBytesWriter API in binascii
This API avoids a final call to _PyBytes_Resize() for output smaller than 512
bytes.

Small optimization: disable overallocation in binascii.rledecode_hqx() for the
last write.
2015-10-13 10:51:47 +02:00
Zachary Ware fcd8794ab5 Closes #25093: Merge with 3.5 2015-10-12 23:31:44 -05:00
Zachary Ware fa10f61ee5 Issue #25093: Merge with 3.4 2015-10-12 23:30:15 -05:00
Zachary Ware 83fd0a81a4 Issue #25093: Fix test_tcl's testloadWithUNC for paths with spaces
Patch by Serhiy Storchaka.
2015-10-12 23:27:58 -05:00
Victor Stinner f7d2471260 Merge 3.5 (sys.setrecursionlimit) 2015-10-13 00:16:07 +02:00
Victor Stinner 50856d5ae7 sys.setrecursionlimit() now raises RecursionError
Issue #25274: sys.setrecursionlimit() now raises a RecursionError if the new
recursion limit is too low depending at the current recursion depth. Modify
also the "lower-water mark" formula to make it monotonic. This mark is used to
decide when the overflowed flag of the thread state is reset.
2015-10-13 00:11:21 +02:00
Victor Stinner 397c42b8cc Merge 3.5 (test_eintr) 2015-10-12 23:37:31 +02:00
Victor Stinner 60f26691f5 Issue #25277: Use a longer sleep in test_eintr to reduce the risk of race
condition in test_eintr.
2015-10-12 23:37:02 +02:00
Victor Stinner 358af13526 Issue #25353: Optimize unicode escape and raw unicode escape encoders to use
the new _PyBytesWriter API.
2015-10-12 22:36:57 +02:00
Victor Stinner d65e4f4eea Issue #24164: Fix test_pyclbr
Ignore pickle.partial symbol which comes from functools.partial.
2015-10-12 14:38:24 +02:00
Victor Stinner e9aa5950bb Fix compilation error in _PyBytesWriter_WriteBytes() on Windows 2015-10-12 13:57:47 +02:00
Victor Stinner 6c2cdae9e6 Writer APIs: use empty string singletons
Modify _PyBytesWriter_Finish() and _PyUnicodeWriter_Finish() to return the
empty bytes/Unicode string if the string is empty.
2015-10-12 13:29:43 +02:00
Victor Stinner c29e29bed1 Relax _PyBytesWriter API
Don't require _PyBytesWriter pointer to be a "char *". Same change for
_PyBytesWriter_WriteBytes() parameter.

For example, binascii uses "unsigned char*".
2015-10-12 13:12:54 +02:00
Benjamin Peterson b031eaee3b merge 3.5 2015-10-11 23:03:47 -07:00
Benjamin Peterson 63e80e1798 merge 3.4 2015-10-11 23:03:41 -07:00
Benjamin Peterson b395188088 actually link to the version attributes documentation 2015-10-11 23:03:22 -07:00
Raymond Hettinger 965362e92d Minor fixup. maxlen is already known. 2015-10-11 22:52:54 -07:00
Raymond Hettinger d96db09b57 Refactor the deque trim logic to eliminate the two separate trim functions. 2015-10-11 22:34:48 -07:00
Terry Jan Reedy 9e6d7a524d Merge with 3.5 2015-10-11 22:08:02 -04:00
Terry Jan Reedy bcbc50bbb2 Merge with 3.4 2015-10-11 22:07:48 -04:00
Terry Jan Reedy d0cadba85f Issue #22726: Re-activate config dialog help button with some content about
the other buttons and the new IDLE Dark theme.
2015-10-11 22:07:31 -04:00
Steve Dower 66b037b087 Merge from 3.5 2015-10-11 18:07:07 -07:00
Steve Dower bec29815d2 Keeps all-users launcher checkbox visible when the option cannot be changed. 2015-10-11 18:06:55 -07:00
Steve Dower 79e60dec1b Merge from 3.5 2015-10-11 18:05:27 -07:00
Steve Dower 8ffe4fdeb0 Only detects features from previous version when a bundle is found.
Otherwise, stray registry entries would cause issues.
Also fixes an accelerator collision and improves UAC icons when upgrading.
2015-10-11 18:05:11 -07:00
Steve Dower 3628d488c7 Issue #25143: Improves installer error messages for unsupported platforms. 2015-10-11 16:40:52 -07:00
Steve Dower b96698112d Issue #25143: Improves installer error messages for unsupported platforms. 2015-10-11 16:40:41 -07:00
Steve Dower 5669387948 Issue #25163: Display correct directory in installer when using non-default settings. 2015-10-11 15:37:36 -07:00