summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Whitespace normalization.Tim Peters2001-10-0418-65/+65
|
* SF bug [#467331] ClassType.__doc__ always None.Tim Peters2001-10-043-7/+59
| | | | | | | | | For a dynamically constructed type object, fill in the tp_doc slot with a copy of the argument dict's "__doc__" value, provided the latter exists and is a string. NOTE: I don't know what to do if it's a Unicode string, so in that case tp_doc is left NULL (which shows up as Py_None if you do Class.__doc__). Note that tp_doc holds a char*, not a general PyObject*.
* Hopefully fix the profiler right. Add a test suite that checks thatGuido van Rossum2001-10-043-18/+136
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | it deals correctly with some anomalous cases; according to this test suite I've fixed it right. The anomalous cases had to do with 'exception' events: these aren't generated when they would be most helpful, and the profiler has to work hard to recover the right information. The problems occur when C code (such as hasattr(), which is used as the example here) calls back into Python code and clears an exception raised by that Python code. Consider this example: def foo(): hasattr(obj, "bar") Where obj is an instance from a class like this: class C: def __getattr__(self, name): raise AttributeError The profiler sees the following sequence of events: call (foo) call (__getattr__) exception (in __getattr__) return (from foo) Previously, the profiler would assume the return event returned from __getattr__. An if statement checking for this condition and raising an exception was commented out... This version does the right thing.
* Expand the documentation of the low-level tracing/profiling interface.Fred Drake2001-10-031-2/+23
| | | | This reflects what is currently in CVS, which may change before 2.2 is final.
* Add some more test cases to be sure we do the right thing in various cases.Fred Drake2001-10-031-0/+117
|
* Undo previous patch; it did not quite work out.Fred Drake2001-10-031-1/+1
|
* Fix a spelling error that has been bugging me for longer than I care to admit.Greg Ward2001-10-031-1/+1
|
* Set .addr in a few more places (patch approved by Sam Rushing)Andrew M. Kuchling2001-10-031-0/+2
|
* dynamics(): add a dummy __getattr__ method to the C class so that theGuido van Rossum2001-10-031-0/+5
| | | | | | test for modifying __getattr__ works, now that slot_tp_getattr_hook zaps the slot if there's no hook. Added an XXX comment with a ref back to slot_tp_getattr_hook.
* typeobject.c, slot_tp_gettattr_hook(): fix the speedup hack -- theGuido van Rossum2001-10-031-0/+12
| | | | | | | | test for getattribute==NULL was bogus because it always found object.__getattribute__. Pick it apart using the trick we learned from slot_sq_item, and if it's just a wrapper around PyObject_GenericGetAttr, zap it. Also added a long XXX comment explaining the consequences.
* remove empty __del__ method from BaseRequestHandler to avoid cyclic garbageSkip Montanaro2001-10-031-3/+0
| | | | loss for no reason.
* *EXPERIMENTAL* speedup of slot_sq_item. This sped up the followingGuido van Rossum2001-10-033-40/+96
| | | | | | | | | | | | | | | | | | | | | | | test dramatically: class T(tuple): __dynamic__ = 1 t = T(range(1000)) for i in range(1000): tt = tuple(t) The speedup was about 5x compared to the previous state of CVS (1.7 vs. 8.8, in arbitrary time units). But it's still more than twice as slow as as the same test with __dynamic__ = 0 (0.8). I'm not sure that I really want to go through the trouble of this kind of speedup for every slot. Even doing it just for the most popular slots will be a major effort (the new slot_sq_item is 40+ lines, while the old one was one line with a powerful macro -- unfortunately the speedup comes from expanding the macro and doing things in a way specific to the slot signature). An alternative that I'm currently considering is sketched in PLAN.txt: trap setattr on type objects. But this will require keeping track of all derived types using weak references.
* Made the classmethod docstring test a bit less trivial.Tim Peters2001-10-031-3/+3
|
* SF bug [#467336] doctest failures w/ new-style classes.Tim Peters2001-10-034-8/+167
| | | | | | | | | | Taught doctest about static methods, class methods, and property docstrings in new-style classes. As for inspect.py/pydoc.py before it, the new stuff needed didn't really fit into the old architecture (but was less of a strain to force-fit here). New-style class docstrings still aren't found, but that's the subject of a different bug and I want to fix that right instead of hacking around it in doctest.
* Mark treatment of binary operators for __rop__-before-__op__ as done.Guido van Rossum2001-10-031-5/+15
| | | | | Add more detail about the speed optimizations needed for __dynamic__. The weak reference solution becomes more attractive...
* call_method(), call_maybe(): fix a performance bug: the argumentGuido van Rossum2001-10-031-8/+3
| | | | | | | 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!
* Note removal of Demo/dns, point to PyDNS.Guido van Rossum2001-10-021-1/+5
|
* Removed Demo/dns -- see sf.net/projects/pydns/ instead.Guido van Rossum2001-10-026-717/+0
|
* SF patch [#466616] Exclude imported items from doctest.Tim Peters2001-10-021-7/+13
| | | | | Another installment; the new functionality wasn't actually enabled in normal use, only in the strained use checked by the test case.
* SF bug [#467265] Compile errors on SuSe Linux on IBM/s390.Tim Peters2001-10-022-2/+7
| | | | | | | 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().
* Add Garbage Collection support to new-style classes (not yet to theirGuido van Rossum2001-10-025-39/+237
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.)
* CVS patch [#466628] Doc changes for doctest patch (#466616), fromTim Peters2001-10-021-25/+2
| | | | Tim Hochberg. Doctest no longer searches imported objects.
* pickles():Guido van Rossum2001-10-021-18/+22
| | | | | | | | - 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).
* The error reporting here was a bit sparse. In verbose mode, the codeGuido van Rossum2001-10-021-30/+24
| | | | | | | | | | 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.
* Under certain conditions (sometimes triggered by the test suite),Guido van Rossum2001-10-021-0/+2
| | | | | "from xml.parsers import expat" succeeds but the imported expat module is an empty shell. Make sure we don't be fooled by that.
* Correct the URL for the license (only used when the LICENSE[.txt] fileGuido van Rossum2001-10-021-1/+1
| | | | | is not found). Being fancy: insert the first 3 characters of sys.version in the URL.
* Update reference to pydns.Guido van Rossum2001-10-021-5/+3
|
* SF patch [#466616] Exclude imported items from doctest,Tim Peters2001-10-023-53/+76
| | | | | | | 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).
* Fredrik tells me the truefalse parameter for boolean() is not part of theFred Drake2001-10-011-5/+3
| | | | public interface, so we can simplify the documentation.
* Removed stray backslash (a typo -- my fault).Tim Peters2001-10-011-1/+1
|
* The description of dictionary comparison was out of date. Rather thanTim Peters2001-10-011-9/+12
| | | | | | 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.
* SF patch [#466353] Py_HUGE_VAL on BeOS for Intel.Tim Peters2001-10-011-1/+5
| | | | | | 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.
* restored 1.5.2 compatibilityFredrik Lundh2001-10-011-46/+39
| | | | | added local escape method (made the dumps method some 50-80% faster) minor tweaks to the unmarshalling code
* SF patch [#466877] SIGBREAK is missing from signal module.Tim Peters2001-10-013-0/+26
| | | | Patch from Steve Scott to add SIGBREAK support (unique to Windows).
* approximately double dump performance by moving import of cgi.escape back toSkip Montanaro2001-10-011-6/+4
| | | | top level.
* simple dumps/loads test case for xmlrpclibSkip Montanaro2001-10-011-0/+23
|
* Miscellaneous code fiddling:Guido van Rossum2001-10-011-28/+41
| | | | | | | | | | | | | | | - 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.
* binary_op1(), ternary_op(): rearrange the code so that slotw is testedGuido van Rossum2001-10-011-14/+14
| | | | | (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).Fred Drake2001-10-014-5/+5
|
* Fix some minor style-guide conformance bugs.Fred Drake2001-10-011-7/+8
|
* Undo last checkin.Martin v. Löwis2001-10-011-2/+0
|
* Straighten out some markup.Fred Drake2001-10-011-3/+4
| | | | "boolean" --> "Boolean" (per the style guide).
* Undo last checkin, since it duplicated the code.Martin v. Löwis2001-10-011-25/+0
|
* slot_sq_length(): squash a leak.Guido van Rossum2001-10-011-1/+4
|
* Refer to the objects which define __len__(), __*item__(), and __iter__()Fred Drake2001-10-011-17/+35
| | | | | | 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.
* slot_tp_new(): newargs was leaking.Guido van Rossum2001-10-011-0/+1
|
* Clarify comments about mailbox objects being iterable.Fred Drake2001-10-011-2/+3
|
* Docs for SF patch #462628Guido van Rossum2001-10-011-2/+8
|
* Another SF patch contributor.Guido van Rossum2001-10-011-0/+1
|
* SF patch #462628 (Travers Naran) NNTPLib supports saving BODY to a file.Guido van Rossum2001-10-011-19/+37
| | | | | | | | | | 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.