Commit Graph

160 Commits

Author SHA1 Message Date
Larry Hastings
581ee3618c Issue #20326: Argument Clinic now uses a simple, unique signature to
annotate text signatures in docstrings, resulting in fewer false
positives.  "self" parameters are also explicitly marked, allowing
inspect.Signature() to authoritatively detect (and skip) said parameters.

Issue #20326: Argument Clinic now generates separate checksums for the
input and output sections of the block, allowing external tools to verify
that the input has not changed (and thus the output is not out-of-date).
2014-01-28 05:00:08 -08:00
Serhiy Storchaka
3c1f0f1b42 Issue #20395: Extract generated clinic code in Modules/_pickle.c to separate file. 2014-01-27 10:34:22 +02:00
Christian Heimes
27ea78b352 silence compiler warning that 's' may be used uninitialized in the load function. 2014-01-27 01:03:53 +01:00
Larry Hastings
c20472640c Issue #20390: Small fixes and improvements for Argument Clinic. 2014-01-25 20:43:29 -08:00
Larry Hastings
5c66189e88 Issue #20189: Four additional builtin types (PyTypeObject,
PyMethodDescr_Type, _PyMethodWrapper_Type, and PyWrapperDescr_Type)
have been modified to provide introspection information for builtins.
Also: many additional Lib, test suite, and Argument Clinic fixes.
2014-01-24 06:17:25 -08:00
Larry Hastings
462582651c Two minor Argument Clinic bugfixes: use the name of the class in the
docstring for __new__ and __init__, and always use "goto exit" instead of
returning "NULL" for failure to parse (as _new__ and __init__ return ints).
2014-01-22 03:05:49 -08:00
Larry Hastings
b7ccb20423 Issue #20294: Argument Clinic now supports argument parsing for __new__ and
__init__ functions.
2014-01-18 23:50:21 -08:00
Larry Hastings
bebf73511a Issue #20287: Argument Clinic's output is now configurable, allowing
delaying its output or even redirecting it to a separate file.
2014-01-17 17:47:17 -08:00
Larry Hastings
8666e65206 Issue #20228: Argument Clinic now has special support for class special
methods.
2014-01-12 14:12:59 -08:00
Larry Hastings
61272b77b0 Issue #19273: The marker comments Argument Clinic uses have been changed
to improve readability.
2014-01-07 12:41:53 -08:00
Larry Hastings
3cceb38486 Issue #19976: Argument Clinic METH_NOARGS functions now always
take two parameters.
2014-01-04 11:09:09 -08:00
Stefan Krah
f483b0f3a9 Issue #19972: Add rarely used freefunc. This fixes a leak if sys.exit()
is used in a program.
2013-12-14 13:43:10 +01:00
Alexandre Vassalotti
d05c9ff845 Issue #6784: Strings from Python 2 can now be unpickled as bytes objects.
Initial patch by Merlijn van Deen.

I've added a few unrelated docstring fixes in the patch while I was at
it, which makes the documentation for pickle a bit more consistent.
2013-12-07 01:09:27 -08:00
Alexandre Vassalotti
6e73ff1a31 Issue #19881: Fix bad pickling of large bytes in cpickle. 2013-12-05 19:29:32 -08:00
Alexandre Vassalotti
2ccf8e969c Issue #6477: Merge with 3.3. 2013-11-30 17:58:53 -08:00
Alexandre Vassalotti
65846c6c51 Issue #6477: Keep PyNotImplemented_Type and PyNone_Type private. 2013-11-30 17:55:48 -08:00
Alexandre Vassalotti
3c23e7a5dc Issue #6477: Merge with 3.3. 2013-11-30 16:21:20 -08:00
Alexandre Vassalotti
19b6fa6ebb Issue #6477: Added support for pickling the types of built-in singletons. 2013-11-30 16:06:39 -08:00
Alexandre Vassalotti
a1eedf9ff0 Merge with 3.3. 2013-11-30 13:55:39 -08:00
Alexandre Vassalotti
896414fedf Fixed _pickle.Unpickler to handle empty persistent IDs correctly. 2013-11-30 13:52:35 -08:00
Serhiy Storchaka
6fe39b76a9 Issue #17897: Optimized unpickle prefetching. 2013-11-30 23:15:38 +02:00
Alexandre Vassalotti
567eba1852 Use PyDict_GetItemWithError instead of PyDict_GetItem in cpickle. 2013-11-28 17:09:16 -08:00
Alexandre Vassalotti
6bf41e54a4 Remove explicit empty tuple reuse in cpickle.
PyTuple_New(0) always returns the same empty tuple from its free list anyway,
so we are not saving much here. Plus, the code where this was used is on
uncommon run paths.
2013-11-28 15:17:29 -08:00
Alexandre Vassalotti
b13e6bcbd8 Remove the tuple reuse optimization in _Pickle_FastCall.
I have noticed a race-condition occurring on one of the buildbots because of
this optimization. The function called may release the GIL which means
multiple threads may end up accessing the shared tuple. I could fix it up by
storing the tuple to the Pickler and Unipickler object again, but honestly it
really not worth the trouble.

I ran many benchmarks and the only time the optimization helps is when using a
fin-memory file, like io.BytesIO on which reads are super cheap, combined with
pickle protocol less than 4. Even in this contrived case, the speedup is a
about 5%. For everything else, this optimization does not provide any
noticable improvements.
2013-11-28 14:56:09 -08:00
Alexandre Vassalotti
23bdd83053 Encapsulate cpickle global state in a dedicated object.
This implements PEP 3121 module finalization as well. This change does not
cause any significant impact on performance.
2013-11-27 19:36:52 -08:00