| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Add more detail about the speed optimizations needed for __dynamic__.
The weak reference solution becomes more attractive...
|
|
|
|
|
|
|
| |
pointing to a static variable to hold the object form of the string
was never used, causing endless calls to PyString_InternFromString().
One particular test (with lots of __getitem__ calls) became a third
faster with this!
|
| |
|
| |
|
|
|
|
|
| |
Another installment; the new functionality wasn't actually enabled in
normal use, only in the strained use checked by the test case.
|
|
|
|
|
|
|
| |
Unknown whether this fixes it.
- stringobject.c, PyString_FromFormatV: don't assume that va_list is of
a type that can be copied via an initializer.
- errors.c, PyErr_Format: add a va_end() to balance the va_start().
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instances).
Also added GC support to various auxiliary types: super, property,
descriptors, wrappers, dictproxy. (Only type objects have a tp_clear
field; the other types are.)
One change was necessary to the GC infrastructure. We have statically
allocated type objects that don't have a GC header (and can't easily
be given one) and heap-allocated type objects that do have a GC
header. Giving these different metatypes would be really ugly: I
tried, and I had to modify pickle.py, cPickle.c, copy.py, add a new
invent a new name for the new metatype and make it a built-in, change
affected tests... In short, a mess. So instead, we add a new type
slot tp_is_gc, which is a simple Boolean function that determines
whether a particular instance has GC headers or not. This slot is
only relevant for types that have the (new) GC flag bit set. If the
tp_is_gc slot is NULL (by far the most common case), all instances of
the type are deemed to have GC headers. This slot is called by the
PyObject_IS_GC() macro (which is only used twice, both times in
gcmodule.c).
I also changed the extern declarations for a bunch of GC-related
functions (_PyObject_GC_Del etc.): these always exist but objimpl.h
only declared them when WITH_CYCLE_GC was defined, but I needed to be
able to reference them without #ifdefs. (When WITH_CYCLE_GC is not
defined, they do the same as their non-GC counterparts anyway.)
|
|
|
|
| |
Tim Hochberg. Doctest no longer searches imported objects.
|
|
|
|
|
|
|
|
| |
- The test for deepcopy() in pickles() was indented wrongly, so it got
run twice (one for binary pickle mode, one for text pickle mode; but
the test doesn't depend on the pickle mode).
- In verbose mode, show which subtest (pickle/cPickle/deepcopy, text/bin).
|
|
|
|
|
|
|
|
|
|
| |
in run_test() referenced two non-existent variables, and in
non-verbose mode, the tests didn't report the actual number, when it
differed from the expected number. Fixed this.
Also added an extra call to gc.collect() at the start of test_all().
This will be needed when I check in the changes to add GC to new-style
classes.
|
|
|
|
|
| |
"from xml.parsers import expat" succeeds but the imported expat module
is an empty shell. Make sure we don't be fooled by that.
|
|
|
|
|
| |
is not found). Being fancy: insert the first 3 characters of
sys.version in the URL.
|
| |
|
|
|
|
|
|
|
| |
from Tim Hochberg. Also mucho fiddling to change the way doctest
determines whether a thing is a function, module or class. Under 2.2,
this really requires the functions in inspect.py (e.g., types.ClassType
is close to meaningless now, if not outright misleading).
|
|
|
|
| |
public interface, so we can simplify the documentation.
|
| |
|
|
|
|
|
|
| |
try to explain the complex general scheme we actually use now, I decided
to spell out only what equality means (which is easy to explain and
intuitive), leaving the other outcomes unspecified beyond consistency.
|
|
|
|
|
|
| |
The patch repaired internal gcc compiler errors on BeOS.
This checkin repairs them in a simpler way, by explicitly casting the
platform INFINITY to double.
|
|
|
|
|
| |
added local escape method (made the dumps method some 50-80% faster)
minor tweaks to the unmarshalling code
|
|
|
|
| |
Patch from Steve Scott to add SIGBREAK support (unique to Windows).
|
|
|
|
| |
top level.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- SLOT1BINFULL() macro: changed this to check for __rop__ overriding
__op__, like binary_op1() in abstract.c -- the latter only calls the
slot function once if both types use the same slot function, so the
slot function must make both calls -- which it already did for the
__op__, __rop__ order, but not yet for the __rop__, __op__ order
when B.__class__ is a subclass of A.__class__.
- slot_sq_contains(), slot_nb_nonzero(): use lookup_maybe() rather
than lookup_method() which sets an exception which we then clear.
- slot_nb_coerce(): don't give up when left argument's __coerce__
returns NotImplemented, but give the right argument a chance.
|
|
|
|
|
| |
(to see whether __rop__ should go before __op__) only when slotv is
set. This saves a test+branch when only slotw is set.
|
| |
|
| |
|
| |
|
|
|
|
| |
"boolean" --> "Boolean" (per the style guide).
|
| |
|
| |
|
|
|
|
|
|
| |
as container objects rather than as mapping objects (in the index entries).
Change the section heading and intro sentence to be a little more general,
since that's how things have actually evolved.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
I modified nntplib so the body method can accept an
optional second parameter pointing to a filehandle or
filename (string). This way, really long body
articles can be stored to disk instead of kept in
memory. The way I made the modification should make
it easy to extend this functionality to other extended
return methods.
|
| |
|
| |
|
| |
|
|
|
|
| |
Decode and encode underscores for header style encoding. Fixes bug #463996.
|
| |
|
|
|
|
|
| |
it acts more like assigning to keys in locals(), i.e. modifications to
function locals aren't reflected in the locals when execfile() returns.
|
| |
|
|
|
|
|
|
| |
Replaced 3 instances of "iter() of non-sequence" with
"iteration over non-sequence".
Restored "unpack non-sequence" for stuff like "a, b = 1".
|
|
|
|
|
|
| |
Generalize PyLong_AsLongLong to accept int arguments too. The real point
is so that PyArg_ParseTuple's 'L' code does too. That code was
undocumented (AFAICT), so documented it.
|
| |
|
|
|
|
|
| |
recent user feedback: you must end the input with \n and you must use
\n, not \r\n to represent line endings.
|
| |
|
| |
|
|
|
|
|
| |
whitespace characters to a single space.
Small changes elsewhere, mostly to clean up the code a little.
|