1991-02-19 08:39:46 -04:00
|
|
|
|
1990-12-20 11:06:42 -04:00
|
|
|
/* Generic object operations; and implementation of None (NoObject) */
|
1990-10-14 09:07:46 -03:00
|
|
|
|
1997-05-02 00:12:38 -03:00
|
|
|
#include "Python.h"
|
2006-08-17 02:42:55 -03:00
|
|
|
#include "sliceobject.h" /* For PyEllipsis_Type */
|
1990-10-14 09:07:46 -03:00
|
|
|
|
2006-04-21 07:40:58 -03:00
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
object.h special-build macro minefield: renamed all the new lexical
helper macros to something saner, and used them appropriately in other
files too, to reduce #ifdef blocks.
classobject.c, instance_dealloc(): One of my worst Python Memories is
trying to fix this routine a few years ago when COUNT_ALLOCS was defined
but Py_TRACE_REFS wasn't. The special-build code here is way too
complicated. Now it's much simpler. Difference: in a Py_TRACE_REFS
build, the instance is no longer in the doubly-linked list of live
objects while its __del__ method is executing, and that may be visible
via sys.getobjects() called from a __del__ method. Tough -- the object
is presumed dead while its __del__ is executing anyway, and not calling
_Py_NewReference() at the start allows enormous code simplification.
typeobject.c, call_finalizer(): The special-build instance_dealloc()
pain apparently spread to here too via cut-'n-paste, and this is much
simpler now too. In addition, I didn't understand why this routine
was calling _PyObject_GC_TRACK() after a resurrection, since there's no
plausible way _PyObject_GC_UNTRACK() could have been called on the
object by this point. I suspect it was left over from pasting the
instance_delloc() code. Instead asserted that the object is still
tracked. Caution: I suspect we don't have a test that actually
exercises the subtype_dealloc() __del__-resurrected-me code.
2002-07-11 03:23:50 -03:00
|
|
|
#ifdef Py_REF_DEBUG
|
2006-03-04 16:00:59 -04:00
|
|
|
Py_ssize_t _Py_RefTotal;
|
2006-04-21 07:40:58 -03:00
|
|
|
|
|
|
|
Py_ssize_t
|
|
|
|
_Py_GetRefTotal(void)
|
|
|
|
{
|
|
|
|
PyObject *o;
|
|
|
|
Py_ssize_t total = _Py_RefTotal;
|
|
|
|
/* ignore the references to the dummy object of the dicts and sets
|
|
|
|
because they are not reliable and not useful (now that the
|
|
|
|
hash table code is well-tested) */
|
|
|
|
o = _PyDict_Dummy();
|
|
|
|
if (o != NULL)
|
|
|
|
total -= o->ob_refcnt;
|
|
|
|
o = _PySet_Dummy();
|
|
|
|
if (o != NULL)
|
|
|
|
total -= o->ob_refcnt;
|
|
|
|
return total;
|
|
|
|
}
|
|
|
|
#endif /* Py_REF_DEBUG */
|
1990-10-14 09:07:46 -03:00
|
|
|
|
2002-07-29 10:42:14 -03:00
|
|
|
int Py_DivisionWarningFlag;
|
Add warning mode for classic division, almost exactly as specified in
PEP 238. Changes:
- add a new flag variable Py_DivisionWarningFlag, declared in
pydebug.h, defined in object.c, set in main.c, and used in
{int,long,float,complex}object.c. When this flag is set, the
classic division operator issues a DeprecationWarning message.
- add a new API PyRun_SimpleStringFlags() to match
PyRun_SimpleString(). The main() function calls this so that
commands run with -c can also benefit from -Dnew.
- While I was at it, I changed the usage message in main() somewhat:
alphabetized the options, split it in *four* parts to fit in under
512 bytes (not that I still believe this is necessary -- doc strings
elsewhere are much longer), and perhaps most visibly, don't display
the full list of options on each command line error. Instead, the
full list is only displayed when -h is used, and otherwise a brief
reminder of -h is displayed. When -h is used, write to stdout so
that you can do `python -h | more'.
Notes:
- I don't want to use the -W option to control whether the classic
division warning is issued or not, because the machinery to decide
whether to display the warning or not is very expensive (it involves
calling into the warnings.py module). You can use -Werror to turn
the warnings into exceptions though.
- The -Dnew option doesn't select future division for all of the
program -- only for the __main__ module. I don't know if I'll ever
change this -- it would require changes to the .pyc file magic
number to do it right, and a more global notion of compiler flags.
- You can usefully combine -Dwarn and -Dnew: this gives the __main__
module new division, and warns about classic division everywhere
else.
2001-08-31 14:40:15 -03:00
|
|
|
|
1990-12-20 11:06:42 -04:00
|
|
|
/* Object allocation routines used by NEWOBJ and NEWVAROBJ macros.
|
|
|
|
These are used by the individual routines for object creation.
|
|
|
|
Do not call them otherwise, they do not initialize the object! */
|
1990-10-14 09:07:46 -03:00
|
|
|
|
2003-03-22 22:51:01 -04:00
|
|
|
#ifdef Py_TRACE_REFS
|
2003-03-23 13:52:28 -04:00
|
|
|
/* Head of circular doubly-linked list of all objects. These are linked
|
|
|
|
* together via the _ob_prev and _ob_next members of a PyObject, which
|
|
|
|
* exist only in a Py_TRACE_REFS build.
|
|
|
|
*/
|
2003-03-22 22:51:01 -04:00
|
|
|
static PyObject refchain = {&refchain, &refchain};
|
2003-03-22 23:33:13 -04:00
|
|
|
|
2003-03-23 13:52:28 -04:00
|
|
|
/* Insert op at the front of the list of all objects. If force is true,
|
|
|
|
* op is added even if _ob_prev and _ob_next are non-NULL already. If
|
|
|
|
* force is false amd _ob_prev or _ob_next are non-NULL, do nothing.
|
|
|
|
* force should be true if and only if op points to freshly allocated,
|
|
|
|
* uninitialized memory, or you've unlinked op from the list and are
|
2003-03-23 14:06:08 -04:00
|
|
|
* relinking it into the front.
|
2003-03-23 13:52:28 -04:00
|
|
|
* Note that objects are normally added to the list via _Py_NewReference,
|
|
|
|
* which is called by PyObject_Init. Not all objects are initialized that
|
|
|
|
* way, though; exceptions include statically allocated type objects, and
|
|
|
|
* statically allocated singletons (like Py_True and Py_None).
|
|
|
|
*/
|
2003-03-22 23:33:13 -04:00
|
|
|
void
|
2003-03-23 13:52:28 -04:00
|
|
|
_Py_AddToAllObjects(PyObject *op, int force)
|
2003-03-22 23:33:13 -04:00
|
|
|
{
|
2003-03-23 13:52:28 -04:00
|
|
|
#ifdef Py_DEBUG
|
|
|
|
if (!force) {
|
|
|
|
/* If it's initialized memory, op must be in or out of
|
|
|
|
* the list unambiguously.
|
|
|
|
*/
|
|
|
|
assert((op->_ob_prev == NULL) == (op->_ob_next == NULL));
|
|
|
|
}
|
2003-03-22 22:51:01 -04:00
|
|
|
#endif
|
2003-03-23 13:52:28 -04:00
|
|
|
if (force || op->_ob_prev == NULL) {
|
|
|
|
op->_ob_next = refchain._ob_next;
|
|
|
|
op->_ob_prev = &refchain;
|
|
|
|
refchain._ob_next->_ob_prev = op;
|
|
|
|
refchain._ob_next = op;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif /* Py_TRACE_REFS */
|
2003-03-22 22:51:01 -04:00
|
|
|
|
1993-10-11 09:54:31 -03:00
|
|
|
#ifdef COUNT_ALLOCS
|
1997-05-02 00:12:38 -03:00
|
|
|
static PyTypeObject *type_list;
|
2006-04-21 07:40:58 -03:00
|
|
|
/* All types are added to type_list, at least when
|
|
|
|
they get one object created. That makes them
|
|
|
|
immortal, which unfortunately contributes to
|
|
|
|
garbage itself. If unlist_types_without_objects
|
|
|
|
is set, they will be removed from the type_list
|
|
|
|
once the last object is deallocated. */
|
|
|
|
int unlist_types_without_objects;
|
1993-10-15 13:18:48 -03:00
|
|
|
extern int tuple_zero_allocs, fast_tuple_allocs;
|
|
|
|
extern int quick_int_allocs, quick_neg_int_allocs;
|
1993-10-22 09:04:32 -03:00
|
|
|
extern int null_strings, one_strings;
|
1993-10-11 09:54:31 -03:00
|
|
|
void
|
2006-04-21 07:40:58 -03:00
|
|
|
dump_counts(FILE* f)
|
1993-10-11 09:54:31 -03:00
|
|
|
{
|
1997-05-02 00:12:38 -03:00
|
|
|
PyTypeObject *tp;
|
1993-10-11 09:54:31 -03:00
|
|
|
|
|
|
|
for (tp = type_list; tp; tp = tp->tp_next)
|
2006-04-21 07:40:58 -03:00
|
|
|
fprintf(f, "%s alloc'd: %d, freed: %d, max in use: %d\n",
|
2001-08-02 01:15:00 -03:00
|
|
|
tp->tp_name, tp->tp_allocs, tp->tp_frees,
|
1993-10-25 05:40:52 -03:00
|
|
|
tp->tp_maxalloc);
|
2006-04-21 07:40:58 -03:00
|
|
|
fprintf(f, "fast tuple allocs: %d, empty: %d\n",
|
1993-10-25 05:40:52 -03:00
|
|
|
fast_tuple_allocs, tuple_zero_allocs);
|
2006-04-21 07:40:58 -03:00
|
|
|
fprintf(f, "fast int allocs: pos: %d, neg: %d\n",
|
1993-10-25 05:40:52 -03:00
|
|
|
quick_int_allocs, quick_neg_int_allocs);
|
2006-04-21 07:40:58 -03:00
|
|
|
fprintf(f, "null strings: %d, 1-strings: %d\n",
|
1993-10-25 05:40:52 -03:00
|
|
|
null_strings, one_strings);
|
1993-10-11 09:54:31 -03:00
|
|
|
}
|
|
|
|
|
1995-08-29 06:18:14 -03:00
|
|
|
PyObject *
|
2000-07-09 12:48:49 -03:00
|
|
|
get_counts(void)
|
1995-08-29 06:18:14 -03:00
|
|
|
{
|
|
|
|
PyTypeObject *tp;
|
|
|
|
PyObject *result;
|
|
|
|
PyObject *v;
|
|
|
|
|
|
|
|
result = PyList_New(0);
|
|
|
|
if (result == NULL)
|
|
|
|
return NULL;
|
|
|
|
for (tp = type_list; tp; tp = tp->tp_next) {
|
Partially merge trunk into p3yk. The removal of Mac/Tools is confusing svn
merge in bad ways, so I'll have to merge that extra-carefully (probably manually.)
Merged revisions 46495-46605 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r46495 | tim.peters | 2006-05-28 03:52:38 +0200 (Sun, 28 May 2006) | 2 lines
Added missing svn:eol-style property to text files.
........
r46497 | tim.peters | 2006-05-28 12:41:29 +0200 (Sun, 28 May 2006) | 3 lines
PyErr_Display(), PyErr_WriteUnraisable(): Coverity found a cut-and-paste
bug in both: `className` was referenced before being checked for NULL.
........
r46499 | fredrik.lundh | 2006-05-28 14:06:46 +0200 (Sun, 28 May 2006) | 5 lines
needforspeed: added Py_MEMCPY macro (currently tuned for Visual C only),
and use it for string copy operations. this gives a 20% speedup on some
string benchmarks.
........
r46501 | michael.hudson | 2006-05-28 17:51:40 +0200 (Sun, 28 May 2006) | 26 lines
Quality control, meet exceptions.c.
Fix a number of problems with the need for speed code:
One is doing this sort of thing:
Py_DECREF(self->field);
self->field = newval;
Py_INCREF(self->field);
without being very sure that self->field doesn't start with a
value that has a __del__, because that almost certainly can lead
to segfaults.
As self->args is constrained to be an exact tuple we may as well
exploit this fact consistently. This leads to quite a lot of
simplification (and, hey, probably better performance).
Add some error checking in places lacking it.
Fix some rather strange indentation in the Unicode code.
Delete some trailing whitespace.
More to come, I haven't fixed all the reference leaks yet...
........
r46502 | george.yoshida | 2006-05-28 18:39:09 +0200 (Sun, 28 May 2006) | 3 lines
Patch #1080727: add "encoding" parameter to doctest.DocFileSuite
Contributed by Bjorn Tillenius.
........
r46503 | martin.v.loewis | 2006-05-28 18:57:38 +0200 (Sun, 28 May 2006) | 4 lines
Rest of patch #1490384: Commit icon source, remove
claim that Erik von Blokland is the author of the
installer picture.
........
r46504 | michael.hudson | 2006-05-28 19:40:29 +0200 (Sun, 28 May 2006) | 16 lines
Quality control, meet exceptions.c, round two.
Make some functions that should have been static static.
Fix a bunch of refleaks by fixing the definition of
MiddlingExtendsException.
Remove all the __new__ implementations apart from
BaseException_new. Rewrite most code that needs it to cope with
NULL fields (such code could get excercised anyway, the
__new__-removal just makes it more likely). This involved
editing the code for WindowsError, which I can't test.
This fixes all the refleaks in at least the start of a regrtest
-R :: run.
........
r46505 | marc-andre.lemburg | 2006-05-28 19:46:58 +0200 (Sun, 28 May 2006) | 10 lines
Initial version of systimes - a module to provide platform dependent
performance measurements.
The module is currently just a proof-of-concept implementation, but
will integrated into pybench once it is stable enough.
License: pybench license.
Author: Marc-Andre Lemburg.
........
r46507 | armin.rigo | 2006-05-28 21:13:17 +0200 (Sun, 28 May 2006) | 15 lines
("Forward-port" of r46506)
Remove various dependencies on dictionary order in the standard library
tests, and one (clearly an oversight, potentially critical) in the
standard library itself - base64.py.
Remaining open issues:
* test_extcall is an output test, messy to make robust
* tarfile.py has a potential bug here, but I'm not familiar
enough with this code. Filed in as SF bug #1496501.
* urllib2.HTTPPasswordMgr() returns a random result if there is more
than one matching root path. I'm asking python-dev for
clarification...
........
r46508 | georg.brandl | 2006-05-28 22:11:45 +0200 (Sun, 28 May 2006) | 4 lines
The empty string is a valid import path.
(fixes #1496539)
........
r46509 | georg.brandl | 2006-05-28 22:23:12 +0200 (Sun, 28 May 2006) | 3 lines
Patch #1496206: urllib2 PasswordMgr ./. default ports
........
r46510 | georg.brandl | 2006-05-28 22:57:09 +0200 (Sun, 28 May 2006) | 3 lines
Fix refleaks in UnicodeError get and set methods.
........
r46511 | michael.hudson | 2006-05-28 23:19:03 +0200 (Sun, 28 May 2006) | 3 lines
use the UnicodeError traversal and clearing functions in UnicodeError
subclasses.
........
r46512 | thomas.wouters | 2006-05-28 23:32:12 +0200 (Sun, 28 May 2006) | 4 lines
Make last patch valid C89 so Windows compilers can deal with it.
........
r46513 | georg.brandl | 2006-05-28 23:42:54 +0200 (Sun, 28 May 2006) | 3 lines
Fix ref-antileak in _struct.c which eventually lead to deallocating None.
........
r46514 | georg.brandl | 2006-05-28 23:57:35 +0200 (Sun, 28 May 2006) | 4 lines
Correct None refcount issue in Mac modules. (Are they
still used?)
........
r46515 | armin.rigo | 2006-05-29 00:07:08 +0200 (Mon, 29 May 2006) | 3 lines
A clearer error message when passing -R to regrtest.py with
release builds of Python.
........
r46516 | georg.brandl | 2006-05-29 00:14:04 +0200 (Mon, 29 May 2006) | 3 lines
Fix C function calling conventions in _sre module.
........
r46517 | georg.brandl | 2006-05-29 00:34:51 +0200 (Mon, 29 May 2006) | 3 lines
Convert audioop over to METH_VARARGS.
........
r46518 | georg.brandl | 2006-05-29 00:38:57 +0200 (Mon, 29 May 2006) | 3 lines
METH_NOARGS functions do get called with two args.
........
r46519 | georg.brandl | 2006-05-29 11:46:51 +0200 (Mon, 29 May 2006) | 4 lines
Fix refleak in socketmodule. Replace bogus Py_BuildValue calls.
Fix refleak in exceptions.
........
r46520 | nick.coghlan | 2006-05-29 14:43:05 +0200 (Mon, 29 May 2006) | 7 lines
Apply modified version of Collin Winter's patch #1478788
Renames functional extension module to _functools and adds a Python
functools module so that utility functions like update_wrapper can be
added easily.
........
r46522 | georg.brandl | 2006-05-29 15:53:16 +0200 (Mon, 29 May 2006) | 3 lines
Convert fmmodule to METH_VARARGS.
........
r46523 | georg.brandl | 2006-05-29 16:13:21 +0200 (Mon, 29 May 2006) | 3 lines
Fix #1494605.
........
r46524 | georg.brandl | 2006-05-29 16:28:05 +0200 (Mon, 29 May 2006) | 3 lines
Handle PyMem_Malloc failure in pystrtod.c. Closes #1494671.
........
r46525 | georg.brandl | 2006-05-29 16:33:55 +0200 (Mon, 29 May 2006) | 3 lines
Fix compiler warning.
........
r46526 | georg.brandl | 2006-05-29 16:39:00 +0200 (Mon, 29 May 2006) | 3 lines
Fix #1494787 (pyclbr counts whitespace as superclass name)
........
r46527 | bob.ippolito | 2006-05-29 17:47:29 +0200 (Mon, 29 May 2006) | 1 line
simplify the struct code a bit (no functional changes)
........
r46528 | armin.rigo | 2006-05-29 19:59:47 +0200 (Mon, 29 May 2006) | 2 lines
Silence a warning.
........
r46529 | georg.brandl | 2006-05-29 21:39:45 +0200 (Mon, 29 May 2006) | 3 lines
Correct some value converting strangenesses.
........
r46530 | nick.coghlan | 2006-05-29 22:27:44 +0200 (Mon, 29 May 2006) | 1 line
When adding a module like functools, it helps to let SVN know about the file.
........
r46531 | georg.brandl | 2006-05-29 22:52:54 +0200 (Mon, 29 May 2006) | 4 lines
Patches #1497027 and #972322: try HTTP digest auth first,
and watch out for handler name collisions.
........
r46532 | georg.brandl | 2006-05-29 22:57:01 +0200 (Mon, 29 May 2006) | 3 lines
Add News entry for last commit.
........
r46533 | georg.brandl | 2006-05-29 23:04:52 +0200 (Mon, 29 May 2006) | 4 lines
Make use of METH_O and METH_NOARGS where possible.
Use Py_UnpackTuple instead of PyArg_ParseTuple where possible.
........
r46534 | georg.brandl | 2006-05-29 23:58:42 +0200 (Mon, 29 May 2006) | 3 lines
Convert more modules to METH_VARARGS.
........
r46535 | georg.brandl | 2006-05-30 00:00:30 +0200 (Tue, 30 May 2006) | 3 lines
Whoops.
........
r46536 | fredrik.lundh | 2006-05-30 00:42:07 +0200 (Tue, 30 May 2006) | 4 lines
fixed "abc".count("", 100) == -96 error (hopefully, nobody's relying on
the current behaviour ;-)
........
r46537 | bob.ippolito | 2006-05-30 00:55:48 +0200 (Tue, 30 May 2006) | 1 line
struct: modulo math plus warning on all endian-explicit formats for compatibility with older struct usage (ugly)
........
r46539 | bob.ippolito | 2006-05-30 02:26:01 +0200 (Tue, 30 May 2006) | 1 line
Add a length check to aifc to ensure it doesn't write a bogus file
........
r46540 | tim.peters | 2006-05-30 04:25:25 +0200 (Tue, 30 May 2006) | 10 lines
deprecated_err(): Stop bizarre warning messages when the tests
are run in the order:
test_genexps (or any other doctest-based test)
test_struct
test_doctest
The `warnings` module needs an advertised way to save/restore
its internal filter list.
........
r46541 | tim.peters | 2006-05-30 04:26:46 +0200 (Tue, 30 May 2006) | 2 lines
Whitespace normalization.
........
r46542 | tim.peters | 2006-05-30 04:30:30 +0200 (Tue, 30 May 2006) | 2 lines
Set a binary svn:mime-type property on this UTF-8 encoded file.
........
r46543 | neal.norwitz | 2006-05-30 05:18:50 +0200 (Tue, 30 May 2006) | 1 line
Simplify further by using AddStringConstant
........
r46544 | tim.peters | 2006-05-30 06:16:25 +0200 (Tue, 30 May 2006) | 6 lines
Convert relevant dict internals to Py_ssize_t.
I don't have a box with nearly enough RAM, or an OS,
that could get close to tickling this, though (requires
a dict w/ at least 2**31 entries).
........
r46545 | neal.norwitz | 2006-05-30 06:19:21 +0200 (Tue, 30 May 2006) | 1 line
Remove stray | in comment
........
r46546 | neal.norwitz | 2006-05-30 06:25:05 +0200 (Tue, 30 May 2006) | 1 line
Use Py_SAFE_DOWNCAST for safety. Fix format strings. Remove 2 more stray | in comment
........
r46547 | neal.norwitz | 2006-05-30 06:43:23 +0200 (Tue, 30 May 2006) | 1 line
No DOWNCAST is required since sizeof(Py_ssize_t) >= sizeof(int) and Py_ReprEntr returns an int
........
r46548 | tim.peters | 2006-05-30 07:04:59 +0200 (Tue, 30 May 2006) | 3 lines
dict_print(): Explicitly narrow the return value
from a (possibly) wider variable.
........
r46549 | tim.peters | 2006-05-30 07:23:59 +0200 (Tue, 30 May 2006) | 5 lines
dict_print(): So that Neal & I don't spend the rest of
our lives taking turns rewriting code that works ;-),
get rid of casting illusions by declaring a new variable
with the obvious type.
........
r46550 | georg.brandl | 2006-05-30 09:04:55 +0200 (Tue, 30 May 2006) | 3 lines
Restore exception pickle support. #1497319.
........
r46551 | georg.brandl | 2006-05-30 09:13:29 +0200 (Tue, 30 May 2006) | 3 lines
Add a test case for exception pickling. args is never NULL.
........
r46552 | neal.norwitz | 2006-05-30 09:21:10 +0200 (Tue, 30 May 2006) | 1 line
Don't fail if the (sub)pkgname already exist.
........
r46553 | georg.brandl | 2006-05-30 09:34:45 +0200 (Tue, 30 May 2006) | 3 lines
Disallow keyword args for exceptions.
........
r46554 | neal.norwitz | 2006-05-30 09:36:54 +0200 (Tue, 30 May 2006) | 5 lines
I'm impatient. I think this will fix a few more problems with the buildbots.
I'm not sure this is the best approach, but I can't think of anything better.
If this creates problems, feel free to revert, but I think it's safe and
should make things a little better.
........
r46555 | georg.brandl | 2006-05-30 10:17:00 +0200 (Tue, 30 May 2006) | 4 lines
Do the check for no keyword arguments in __init__ so that
subclasses of Exception can be supplied keyword args
........
r46556 | georg.brandl | 2006-05-30 10:47:19 +0200 (Tue, 30 May 2006) | 3 lines
Convert test_exceptions to unittest.
........
r46557 | andrew.kuchling | 2006-05-30 14:52:01 +0200 (Tue, 30 May 2006) | 1 line
Add SoC name, and reorganize this section a bit
........
r46559 | tim.peters | 2006-05-30 17:53:34 +0200 (Tue, 30 May 2006) | 11 lines
PyLong_FromString(): Continued fraction analysis (explained in
a new comment) suggests there are almost certainly large input
integers in all non-binary input bases for which one Python digit
too few is initally allocated to hold the final result. Instead
of assert-failing when that happens, allocate more space. Alas,
I estimate it would take a few days to find a specific such case,
so this isn't backed up by a new test (not to mention that such
a case may take hours to run, since conversion time is quadratic
in the number of digits, and preliminary attempts suggested that
the smallest such inputs contain at least a million digits).
........
r46560 | fredrik.lundh | 2006-05-30 19:11:48 +0200 (Tue, 30 May 2006) | 3 lines
changed find/rfind to return -1 for matches outside the source string
........
r46561 | bob.ippolito | 2006-05-30 19:37:54 +0200 (Tue, 30 May 2006) | 1 line
Change wrapping terminology to overflow masking
........
r46562 | fredrik.lundh | 2006-05-30 19:39:58 +0200 (Tue, 30 May 2006) | 3 lines
changed count to return 0 for slices outside the source string
........
r46568 | tim.peters | 2006-05-31 01:28:02 +0200 (Wed, 31 May 2006) | 2 lines
Whitespace normalization.
........
r46569 | brett.cannon | 2006-05-31 04:19:54 +0200 (Wed, 31 May 2006) | 5 lines
Clarify wording on default values for strptime(); defaults are used when better
values cannot be inferred.
Closes bug #1496315.
........
r46572 | neal.norwitz | 2006-05-31 09:43:27 +0200 (Wed, 31 May 2006) | 1 line
Calculate smallest properly (it was off by one) and use proper ssize_t types for Win64
........
r46573 | neal.norwitz | 2006-05-31 10:01:08 +0200 (Wed, 31 May 2006) | 1 line
Revert last checkin, it is better to do make distclean
........
r46574 | neal.norwitz | 2006-05-31 11:02:44 +0200 (Wed, 31 May 2006) | 3 lines
On 64-bit platforms running test_struct after test_tarfile would fail
since the deprecation warning wouldn't be raised.
........
r46575 | thomas.heller | 2006-05-31 13:37:58 +0200 (Wed, 31 May 2006) | 3 lines
PyTuple_Pack is not available in Python 2.3, but ctypes must stay
compatible with that.
........
r46576 | andrew.kuchling | 2006-05-31 15:18:56 +0200 (Wed, 31 May 2006) | 1 line
'functional' module was renamed to 'functools'
........
r46577 | kristjan.jonsson | 2006-05-31 15:35:41 +0200 (Wed, 31 May 2006) | 1 line
Fixup the PCBuild8 project directory. exceptions.c have moved to Objects, and the functionalmodule.c has been replaced with _functoolsmodule.c. Other minor changes to .vcproj files and .sln to fix compilation
........
r46578 | andrew.kuchling | 2006-05-31 16:08:48 +0200 (Wed, 31 May 2006) | 15 lines
[Bug #1473048]
SimpleXMLRPCServer and DocXMLRPCServer don't look at
the path of the HTTP request at all; you can POST or
GET from / or /RPC2 or /blahblahblah with the same results.
Security scanners that look for /cgi-bin/phf will therefore report
lots of vulnerabilities.
Fix: add a .rpc_paths attribute to the SimpleXMLRPCServer class,
and report a 404 error if the path isn't on the allowed list.
Possibly-controversial aspect of this change: the default makes only
'/' and '/RPC2' legal. Maybe this will break people's applications
(though I doubt it). We could just set the default to an empty tuple,
which would exactly match the current behaviour.
........
r46579 | andrew.kuchling | 2006-05-31 16:12:47 +0200 (Wed, 31 May 2006) | 1 line
Mention SimpleXMLRPCServer change
........
r46580 | tim.peters | 2006-05-31 16:28:07 +0200 (Wed, 31 May 2006) | 2 lines
Trimmed trailing whitespace.
........
r46581 | tim.peters | 2006-05-31 17:33:22 +0200 (Wed, 31 May 2006) | 4 lines
_range_error(): Speed and simplify (there's no real need for
loops here). Assert that size_t is actually big enough, and
that f->size is at least one. Wrap a long line.
........
r46582 | tim.peters | 2006-05-31 17:34:37 +0200 (Wed, 31 May 2006) | 2 lines
Repaired error in new comment.
........
r46584 | neal.norwitz | 2006-06-01 07:32:49 +0200 (Thu, 01 Jun 2006) | 4 lines
Remove ; at end of macro. There was a compiler recently that warned
about extra semi-colons. It may have been the HP C compiler.
This file will trigger a bunch of those warnings now.
........
r46585 | georg.brandl | 2006-06-01 08:39:19 +0200 (Thu, 01 Jun 2006) | 3 lines
Correctly unpickle 2.4 exceptions via __setstate__ (patch #1498571)
........
r46586 | georg.brandl | 2006-06-01 10:27:32 +0200 (Thu, 01 Jun 2006) | 3 lines
Correctly allocate complex types with tp_alloc. (bug #1498638)
........
r46587 | georg.brandl | 2006-06-01 14:30:46 +0200 (Thu, 01 Jun 2006) | 2 lines
Correctly dispatch Faults in loads (patch #1498627)
........
r46588 | georg.brandl | 2006-06-01 15:00:49 +0200 (Thu, 01 Jun 2006) | 3 lines
Some code style tweaks, and remove apply.
........
r46589 | armin.rigo | 2006-06-01 15:19:12 +0200 (Thu, 01 Jun 2006) | 5 lines
[ 1497053 ] Let dicts propagate the exceptions in user __eq__().
[ 1456209 ] dictresize() vulnerability ( <- backport candidate ).
........
r46590 | tim.peters | 2006-06-01 15:41:46 +0200 (Thu, 01 Jun 2006) | 2 lines
Whitespace normalization.
........
r46591 | tim.peters | 2006-06-01 15:49:23 +0200 (Thu, 01 Jun 2006) | 2 lines
Record bugs 1275608 and 1456209 as being fixed.
........
r46592 | tim.peters | 2006-06-01 15:56:26 +0200 (Thu, 01 Jun 2006) | 5 lines
Re-enable a new empty-string test added during the NFS sprint,
but disabled then because str and unicode strings gave different
results. The implementations were repaired later during the
sprint, but the new test remained disabled.
........
r46594 | tim.peters | 2006-06-01 17:50:44 +0200 (Thu, 01 Jun 2006) | 7 lines
Armin committed his patch while I was reviewing it (I'm sure
he didn't know this), so merged in some changes I made during
review. Nothing material apart from changing a new `mask` local
from int to Py_ssize_t. Mostly this is repairing comments that
were made incorrect, and adding new comments. Also a few
minor code rewrites for clarity or helpful succinctness.
........
r46599 | neal.norwitz | 2006-06-02 06:45:53 +0200 (Fri, 02 Jun 2006) | 1 line
Convert docstrings to comments so regrtest -v prints method names
........
r46600 | neal.norwitz | 2006-06-02 06:50:49 +0200 (Fri, 02 Jun 2006) | 2 lines
Fix memory leak found by valgrind.
........
r46601 | neal.norwitz | 2006-06-02 06:54:52 +0200 (Fri, 02 Jun 2006) | 1 line
More memory leaks from valgrind
........
r46602 | neal.norwitz | 2006-06-02 08:23:00 +0200 (Fri, 02 Jun 2006) | 11 lines
Patch #1357836:
Prevent an invalid memory read from test_coding in case the done flag is set.
In that case, the loop isn't entered. I wonder if rather than setting
the done flag in the cases before the loop, if they should just exit early.
This code looks like it should be refactored.
Backport candidate (also the early break above if decoding_fgets fails)
........
r46603 | martin.blais | 2006-06-02 15:03:43 +0200 (Fri, 02 Jun 2006) | 1 line
Fixed struct test to not use unittest.
........
r46605 | tim.peters | 2006-06-03 01:22:51 +0200 (Sat, 03 Jun 2006) | 10 lines
pprint functions used to sort a dict (by key) if and only if
the output required more than one line. "Small" dicts got
displayed in seemingly random order (the hash-induced order
produced by dict.__repr__). None of this was documented.
Now pprint functions always sort dicts by key, and the docs
promise it.
This was proposed and agreed to during the PyCon 2006 core
sprint -- I just didn't have time for it before now.
........
2006-06-08 11:42:34 -03:00
|
|
|
v = Py_BuildValue("(snnn)", tp->tp_name, tp->tp_allocs,
|
2001-08-02 01:15:00 -03:00
|
|
|
tp->tp_frees, tp->tp_maxalloc);
|
1995-08-29 06:18:14 -03:00
|
|
|
if (v == NULL) {
|
|
|
|
Py_DECREF(result);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
if (PyList_Append(result, v) < 0) {
|
|
|
|
Py_DECREF(v);
|
|
|
|
Py_DECREF(result);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
Py_DECREF(v);
|
|
|
|
}
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
1993-10-11 09:54:31 -03:00
|
|
|
void
|
2000-07-09 12:48:49 -03:00
|
|
|
inc_count(PyTypeObject *tp)
|
1993-10-11 09:54:31 -03:00
|
|
|
{
|
2006-04-21 07:40:58 -03:00
|
|
|
if (tp->tp_next == NULL && tp->tp_prev == NULL) {
|
1995-04-06 11:46:26 -03:00
|
|
|
/* first time; insert in linked list */
|
1993-10-11 09:54:31 -03:00
|
|
|
if (tp->tp_next != NULL) /* sanity check */
|
1997-05-02 00:12:38 -03:00
|
|
|
Py_FatalError("XXX inc_count sanity check");
|
2006-04-21 07:40:58 -03:00
|
|
|
if (type_list)
|
|
|
|
type_list->tp_prev = tp;
|
1993-10-11 09:54:31 -03:00
|
|
|
tp->tp_next = type_list;
|
2002-07-08 19:11:52 -03:00
|
|
|
/* Note that as of Python 2.2, heap-allocated type objects
|
|
|
|
* can go away, but this code requires that they stay alive
|
|
|
|
* until program exit. That's why we're careful with
|
|
|
|
* refcounts here. type_list gets a new reference to tp,
|
|
|
|
* while ownership of the reference type_list used to hold
|
|
|
|
* (if any) was transferred to tp->tp_next in the line above.
|
|
|
|
* tp is thus effectively immortal after this.
|
|
|
|
*/
|
|
|
|
Py_INCREF(tp);
|
1993-10-11 09:54:31 -03:00
|
|
|
type_list = tp;
|
2003-03-22 23:04:32 -04:00
|
|
|
#ifdef Py_TRACE_REFS
|
2003-03-23 13:52:28 -04:00
|
|
|
/* Also insert in the doubly-linked list of all objects,
|
|
|
|
* if not already there.
|
|
|
|
*/
|
|
|
|
_Py_AddToAllObjects((PyObject *)tp, 0);
|
2003-03-22 22:51:01 -04:00
|
|
|
#endif
|
1993-10-11 09:54:31 -03:00
|
|
|
}
|
2001-08-02 01:15:00 -03:00
|
|
|
tp->tp_allocs++;
|
|
|
|
if (tp->tp_allocs - tp->tp_frees > tp->tp_maxalloc)
|
|
|
|
tp->tp_maxalloc = tp->tp_allocs - tp->tp_frees;
|
1993-10-11 09:54:31 -03:00
|
|
|
}
|
2006-04-21 07:40:58 -03:00
|
|
|
|
|
|
|
void dec_count(PyTypeObject *tp)
|
|
|
|
{
|
|
|
|
tp->tp_frees++;
|
|
|
|
if (unlist_types_without_objects &&
|
|
|
|
tp->tp_allocs == tp->tp_frees) {
|
|
|
|
/* unlink the type from type_list */
|
|
|
|
if (tp->tp_prev)
|
|
|
|
tp->tp_prev->tp_next = tp->tp_next;
|
|
|
|
else
|
|
|
|
type_list = tp->tp_next;
|
|
|
|
if (tp->tp_next)
|
|
|
|
tp->tp_next->tp_prev = tp->tp_prev;
|
|
|
|
tp->tp_next = tp->tp_prev = NULL;
|
|
|
|
Py_DECREF(tp);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
1993-10-11 09:54:31 -03:00
|
|
|
#endif
|
|
|
|
|
2002-07-08 23:57:01 -03:00
|
|
|
#ifdef Py_REF_DEBUG
|
|
|
|
/* Log a fatal error; doesn't return. */
|
|
|
|
void
|
|
|
|
_Py_NegativeRefcount(const char *fname, int lineno, PyObject *op)
|
|
|
|
{
|
|
|
|
char buf[300];
|
|
|
|
|
|
|
|
PyOS_snprintf(buf, sizeof(buf),
|
2006-04-21 07:40:58 -03:00
|
|
|
"%s:%i object at %p has negative ref count "
|
|
|
|
"%" PY_FORMAT_SIZE_T "d",
|
|
|
|
fname, lineno, op, op->ob_refcnt);
|
2002-07-08 23:57:01 -03:00
|
|
|
Py_FatalError(buf);
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif /* Py_REF_DEBUG */
|
|
|
|
|
2004-04-22 14:23:49 -03:00
|
|
|
void
|
|
|
|
Py_IncRef(PyObject *o)
|
|
|
|
{
|
|
|
|
Py_XINCREF(o);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
Py_DecRef(PyObject *o)
|
|
|
|
{
|
|
|
|
Py_XDECREF(o);
|
|
|
|
}
|
|
|
|
|
1997-05-02 00:12:38 -03:00
|
|
|
PyObject *
|
2000-07-09 12:48:49 -03:00
|
|
|
PyObject_Init(PyObject *op, PyTypeObject *tp)
|
1990-10-14 09:07:46 -03:00
|
|
|
{
|
2002-10-11 17:37:24 -03:00
|
|
|
if (op == NULL)
|
|
|
|
return PyErr_NoMemory();
|
2000-05-03 20:44:39 -03:00
|
|
|
/* Any changes should be reflected in PyObject_INIT (objimpl.h) */
|
2007-12-18 22:45:37 -04:00
|
|
|
Py_TYPE(op) = tp;
|
1997-05-02 00:12:38 -03:00
|
|
|
_Py_NewReference(op);
|
1990-10-14 09:07:46 -03:00
|
|
|
return op;
|
|
|
|
}
|
|
|
|
|
1997-05-15 18:31:03 -03:00
|
|
|
PyVarObject *
|
2006-02-15 13:27:45 -04:00
|
|
|
PyObject_InitVar(PyVarObject *op, PyTypeObject *tp, Py_ssize_t size)
|
2000-05-03 20:44:39 -03:00
|
|
|
{
|
2002-10-11 17:37:24 -03:00
|
|
|
if (op == NULL)
|
|
|
|
return (PyVarObject *) PyErr_NoMemory();
|
2000-05-03 20:44:39 -03:00
|
|
|
/* Any changes should be reflected in PyObject_INIT_VAR */
|
|
|
|
op->ob_size = size;
|
2007-12-18 22:45:37 -04:00
|
|
|
Py_TYPE(op) = tp;
|
2000-05-03 20:44:39 -03:00
|
|
|
_Py_NewReference((PyObject *)op);
|
|
|
|
return op;
|
|
|
|
}
|
|
|
|
|
|
|
|
PyObject *
|
2000-07-09 12:48:49 -03:00
|
|
|
_PyObject_New(PyTypeObject *tp)
|
2000-05-03 20:44:39 -03:00
|
|
|
{
|
|
|
|
PyObject *op;
|
|
|
|
op = (PyObject *) PyObject_MALLOC(_PyObject_SIZE(tp));
|
|
|
|
if (op == NULL)
|
|
|
|
return PyErr_NoMemory();
|
|
|
|
return PyObject_INIT(op, tp);
|
|
|
|
}
|
|
|
|
|
1997-05-15 18:31:03 -03:00
|
|
|
PyVarObject *
|
2006-02-15 13:27:45 -04:00
|
|
|
_PyObject_NewVar(PyTypeObject *tp, Py_ssize_t nitems)
|
1990-10-14 09:07:46 -03:00
|
|
|
{
|
2000-05-03 20:44:39 -03:00
|
|
|
PyVarObject *op;
|
2001-10-07 00:54:51 -03:00
|
|
|
const size_t size = _PyObject_VAR_SIZE(tp, nitems);
|
2001-10-06 18:27:34 -03:00
|
|
|
op = (PyVarObject *) PyObject_MALLOC(size);
|
1990-10-14 09:07:46 -03:00
|
|
|
if (op == NULL)
|
1997-05-15 18:31:03 -03:00
|
|
|
return (PyVarObject *)PyErr_NoMemory();
|
2001-10-06 18:27:34 -03:00
|
|
|
return PyObject_INIT_VAR(op, tp, nitems);
|
2000-05-03 20:44:39 -03:00
|
|
|
}
|
|
|
|
|
2003-01-13 16:13:12 -04:00
|
|
|
/* Implementation of PyObject_Print with recursion checking */
|
|
|
|
static int
|
|
|
|
internal_print(PyObject *op, FILE *fp, int flags, int nesting)
|
1990-10-14 09:07:46 -03:00
|
|
|
{
|
1991-07-27 18:40:24 -03:00
|
|
|
int ret = 0;
|
2003-01-13 16:13:12 -04:00
|
|
|
if (nesting > 10) {
|
|
|
|
PyErr_SetString(PyExc_RuntimeError, "print recursion");
|
|
|
|
return -1;
|
|
|
|
}
|
1997-05-02 00:12:38 -03:00
|
|
|
if (PyErr_CheckSignals())
|
1991-06-07 13:10:43 -03:00
|
|
|
return -1;
|
1998-04-28 13:06:54 -03:00
|
|
|
#ifdef USE_STACKCHECK
|
|
|
|
if (PyOS_CheckStack()) {
|
2000-10-24 16:57:45 -03:00
|
|
|
PyErr_SetString(PyExc_MemoryError, "stack overflow");
|
1998-04-28 13:06:54 -03:00
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
#endif
|
2000-01-12 12:28:58 -04:00
|
|
|
clearerr(fp); /* Clear any previous error condition */
|
1991-06-07 13:10:43 -03:00
|
|
|
if (op == NULL) {
|
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r58096 | brett.cannon | 2007-09-10 23:38:27 +0200 (Mon, 10 Sep 2007) | 4 lines
Fix a possible segfault from recursing too deep to get the repr of a list.
Closes issue #1096.
........
r58097 | bill.janssen | 2007-09-10 23:51:02 +0200 (Mon, 10 Sep 2007) | 33 lines
More work on SSL support.
* Much expanded test suite:
All protocols tested against all other protocols.
All protocols tested with all certificate options.
Tests for bad key and bad cert.
Test of STARTTLS functionality.
Test of RAND_* functions.
* Fixes for threading/malloc bug.
* Issue 1065 fixed:
sslsocket class renamed to SSLSocket.
sslerror class renamed to SSLError.
Function "wrap_socket" now used to wrap an existing socket.
* Issue 1583946 finally fixed:
Support for subjectAltName added.
Subject name now returned as proper DN list of RDNs.
* SSLError exported from socket as "sslerror".
* RAND_* functions properly exported from ssl.py.
* Documentation improved:
Example of how to create a self-signed certificate.
Better indexing.
........
r58098 | guido.van.rossum | 2007-09-11 00:02:25 +0200 (Tue, 11 Sep 2007) | 9 lines
Patch # 1140 (my code, approved by Effbot).
Make sure the type of the return value of re.sub(x, y, z) is the type
of y+x (i.e. unicode if either is unicode, str if they are both str)
even if there are no substitutions or if x==z (which triggered various
special cases in join_list()).
Could be backported to 2.5; no need to port to 3.0.
........
r58099 | guido.van.rossum | 2007-09-11 00:36:02 +0200 (Tue, 11 Sep 2007) | 8 lines
Patch # 1026 by Benjamin Aranguren (with Alex Martelli):
Backport abc.py and isinstance/issubclass overloading to 2.6.
I had to backport test_typechecks.py myself, and make one small change
to abc.py to avoid duplicate work when x.__class__ and type(x) are the
same.
........
r58100 | bill.janssen | 2007-09-11 01:41:24 +0200 (Tue, 11 Sep 2007) | 3 lines
A better way of finding an open port to test with.
........
r58101 | bill.janssen | 2007-09-11 03:09:19 +0200 (Tue, 11 Sep 2007) | 4 lines
Make sure test_ssl doesn't reference the ssl module in a
context where it can't be imported.
........
r58102 | bill.janssen | 2007-09-11 04:42:07 +0200 (Tue, 11 Sep 2007) | 3 lines
Fix some documentation bugs.
........
r58103 | nick.coghlan | 2007-09-11 16:01:18 +0200 (Tue, 11 Sep 2007) | 1 line
Always use the -E flag when spawning subprocesses in test_cmd_line (Issue 1056)
........
r58106 | thomas.heller | 2007-09-11 21:17:48 +0200 (Tue, 11 Sep 2007) | 3 lines
Disable some tests that fail on the 'ppc Debian unstable' buildbot to
find out if they cause the segfault on the 'alpha Debian' machine.
........
r58108 | brett.cannon | 2007-09-11 23:02:28 +0200 (Tue, 11 Sep 2007) | 6 lines
Generators had their throw() method allowing string exceptions. That's a
no-no.
Fixes issue #1147. Need to fix 2.5 to raise a proper warning if a string
exception is passed in.
........
r58112 | georg.brandl | 2007-09-12 20:03:51 +0200 (Wed, 12 Sep 2007) | 3 lines
New documentation page for the bdb module.
(This doesn't need to be merged to Py3k.)
........
r58114 | georg.brandl | 2007-09-12 20:05:57 +0200 (Wed, 12 Sep 2007) | 2 lines
Bug #1152: use non-deprecated name in example.
........
r58115 | georg.brandl | 2007-09-12 20:08:33 +0200 (Wed, 12 Sep 2007) | 2 lines
Fix #1122: wrong return type documented for various _Size() functions.
........
r58117 | georg.brandl | 2007-09-12 20:10:56 +0200 (Wed, 12 Sep 2007) | 2 lines
Fix #1139: PyFile_Encoding really is PyFile_SetEncoding.
........
r58119 | georg.brandl | 2007-09-12 20:29:18 +0200 (Wed, 12 Sep 2007) | 2 lines
bug #1154: release memory allocated by "es" PyArg_ParseTuple format specifier.
........
r58121 | bill.janssen | 2007-09-12 20:52:05 +0200 (Wed, 12 Sep 2007) | 1 line
root certificate for https://svn.python.org/, used in test_ssl
........
r58122 | georg.brandl | 2007-09-12 21:00:07 +0200 (Wed, 12 Sep 2007) | 3 lines
Bug #1153: repr.repr() now doesn't require set and dictionary items
to be orderable to properly represent them.
........
r58125 | georg.brandl | 2007-09-12 21:29:28 +0200 (Wed, 12 Sep 2007) | 4 lines
#1120: put explicit version in the shebang lines of pydoc, idle
and smtpd.py scripts that are installed by setup.py. That way, they
work when only "make altinstall" is used.
........
r58139 | mark.summerfield | 2007-09-13 16:54:30 +0200 (Thu, 13 Sep 2007) | 9 lines
Replaced variable o with obj in operator.rst because o is easy to
confuse.
Added a note about Python 3's collections.Mapping etc., above section
that describes isMappingType() etc.
Added xrefs between os, os.path, fileinput, and open().
........
r58143 | facundo.batista | 2007-09-13 20:13:15 +0200 (Thu, 13 Sep 2007) | 7 lines
Merged the decimal-branch (revisions 54886 to 58140). Decimal is now
fully updated to the latests Decimal Specification (v1.66) and the
latests test cases (v2.56).
Thanks to Mark Dickinson for all his help during this process.
........
r58145 | facundo.batista | 2007-09-13 20:42:09 +0200 (Thu, 13 Sep 2007) | 7 lines
Put the parameter watchexp back in (changed watchexp from an int
to a bool). Also second argument to watchexp is now converted
to Decimal, just as with all the other two-argument operations.
Thanks Mark Dickinson.
........
r58147 | andrew.kuchling | 2007-09-14 00:49:34 +0200 (Fri, 14 Sep 2007) | 1 line
Add various items
........
r58148 | andrew.kuchling | 2007-09-14 00:50:10 +0200 (Fri, 14 Sep 2007) | 1 line
Make target unique
........
r58154 | facundo.batista | 2007-09-14 20:58:34 +0200 (Fri, 14 Sep 2007) | 3 lines
Included the new functions, and new descriptions.
........
r58155 | thomas.heller | 2007-09-14 21:40:35 +0200 (Fri, 14 Sep 2007) | 2 lines
ctypes.util.find_library uses dump(1) instead of objdump(1) on Solaris.
Fixes issue #1777530; will backport to release25-maint.
........
r58159 | facundo.batista | 2007-09-14 23:29:52 +0200 (Fri, 14 Sep 2007) | 3 lines
Some additions (examples and a bit on the tutorial).
........
r58160 | georg.brandl | 2007-09-15 18:53:36 +0200 (Sat, 15 Sep 2007) | 2 lines
Remove bdb from the "undocumented modules" list.
........
r58164 | bill.janssen | 2007-09-17 00:06:00 +0200 (Mon, 17 Sep 2007) | 15 lines
Add support for asyncore server-side SSL support. This requires
adding the 'makefile' method to ssl.SSLSocket, and importing the
requisite fakefile class from socket.py, and making the appropriate
changes to it to make it use the SSL connection.
Added sample HTTPS server to test_ssl.py, and test that uses it.
Change SSL tests to use https://svn.python.org/, instead of
www.sf.net and pop.gmail.com.
Added utility function to ssl module, get_server_certificate,
to wrap up the several things to be done to pull a certificate
from a remote server.
........
r58173 | bill.janssen | 2007-09-17 01:16:46 +0200 (Mon, 17 Sep 2007) | 1 line
use binary mode when reading files for testAsyncore to make Windows happy
........
r58175 | raymond.hettinger | 2007-09-17 02:55:00 +0200 (Mon, 17 Sep 2007) | 7 lines
Sync-up named tuples with the latest version of the ASPN recipe.
Allows optional commas in the field-name spec (help when named tuples are used in conjuction with sql queries).
Adds the __fields__ attribute for introspection and to support conversion to dictionary form.
Adds a __replace__() method similar to str.replace() but using a named field as a target.
Clean-up spelling and presentation in doc-strings.
........
r58176 | brett.cannon | 2007-09-17 05:28:34 +0200 (Mon, 17 Sep 2007) | 5 lines
Add a bunch of GIL release/acquire points in tp_print implementations and for
PyObject_Print().
Closes issue #1164.
........
r58177 | sean.reifschneider | 2007-09-17 07:45:04 +0200 (Mon, 17 Sep 2007) | 2 lines
issue1597011: Fix for bz2 module corner-case error due to error checking bug.
........
r58180 | facundo.batista | 2007-09-17 18:26:50 +0200 (Mon, 17 Sep 2007) | 3 lines
Decimal is updated, :)
........
r58181 | facundo.batista | 2007-09-17 19:30:13 +0200 (Mon, 17 Sep 2007) | 5 lines
The methods always return Decimal classes, even if they're
executed through a subclass (thanks Mark Dickinson).
Added a bit of testing for this.
........
r58183 | sean.reifschneider | 2007-09-17 22:53:21 +0200 (Mon, 17 Sep 2007) | 2 lines
issue1082: Fixing platform and system for Vista.
........
r58185 | andrew.kuchling | 2007-09-18 03:36:16 +0200 (Tue, 18 Sep 2007) | 1 line
Add item; sort properly
........
r58186 | raymond.hettinger | 2007-09-18 05:33:19 +0200 (Tue, 18 Sep 2007) | 1 line
Handle corner cased on 0-tuples and 1-tuples. Add verbose option so people can see how it works.
........
r58192 | georg.brandl | 2007-09-18 09:24:40 +0200 (Tue, 18 Sep 2007) | 2 lines
A bit of reordering, also show more subheadings in the lang ref index.
........
r58193 | facundo.batista | 2007-09-18 18:53:18 +0200 (Tue, 18 Sep 2007) | 4 lines
Speed up of the various division operations (remainder, divide,
divideint and divmod). Thanks Mark Dickinson.
........
r58197 | raymond.hettinger | 2007-09-19 00:18:02 +0200 (Wed, 19 Sep 2007) | 1 line
Cleanup docs for NamedTuple.
........
2007-09-19 00:06:30 -03:00
|
|
|
Py_BEGIN_ALLOW_THREADS
|
1991-06-07 13:10:43 -03:00
|
|
|
fprintf(fp, "<nil>");
|
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r58096 | brett.cannon | 2007-09-10 23:38:27 +0200 (Mon, 10 Sep 2007) | 4 lines
Fix a possible segfault from recursing too deep to get the repr of a list.
Closes issue #1096.
........
r58097 | bill.janssen | 2007-09-10 23:51:02 +0200 (Mon, 10 Sep 2007) | 33 lines
More work on SSL support.
* Much expanded test suite:
All protocols tested against all other protocols.
All protocols tested with all certificate options.
Tests for bad key and bad cert.
Test of STARTTLS functionality.
Test of RAND_* functions.
* Fixes for threading/malloc bug.
* Issue 1065 fixed:
sslsocket class renamed to SSLSocket.
sslerror class renamed to SSLError.
Function "wrap_socket" now used to wrap an existing socket.
* Issue 1583946 finally fixed:
Support for subjectAltName added.
Subject name now returned as proper DN list of RDNs.
* SSLError exported from socket as "sslerror".
* RAND_* functions properly exported from ssl.py.
* Documentation improved:
Example of how to create a self-signed certificate.
Better indexing.
........
r58098 | guido.van.rossum | 2007-09-11 00:02:25 +0200 (Tue, 11 Sep 2007) | 9 lines
Patch # 1140 (my code, approved by Effbot).
Make sure the type of the return value of re.sub(x, y, z) is the type
of y+x (i.e. unicode if either is unicode, str if they are both str)
even if there are no substitutions or if x==z (which triggered various
special cases in join_list()).
Could be backported to 2.5; no need to port to 3.0.
........
r58099 | guido.van.rossum | 2007-09-11 00:36:02 +0200 (Tue, 11 Sep 2007) | 8 lines
Patch # 1026 by Benjamin Aranguren (with Alex Martelli):
Backport abc.py and isinstance/issubclass overloading to 2.6.
I had to backport test_typechecks.py myself, and make one small change
to abc.py to avoid duplicate work when x.__class__ and type(x) are the
same.
........
r58100 | bill.janssen | 2007-09-11 01:41:24 +0200 (Tue, 11 Sep 2007) | 3 lines
A better way of finding an open port to test with.
........
r58101 | bill.janssen | 2007-09-11 03:09:19 +0200 (Tue, 11 Sep 2007) | 4 lines
Make sure test_ssl doesn't reference the ssl module in a
context where it can't be imported.
........
r58102 | bill.janssen | 2007-09-11 04:42:07 +0200 (Tue, 11 Sep 2007) | 3 lines
Fix some documentation bugs.
........
r58103 | nick.coghlan | 2007-09-11 16:01:18 +0200 (Tue, 11 Sep 2007) | 1 line
Always use the -E flag when spawning subprocesses in test_cmd_line (Issue 1056)
........
r58106 | thomas.heller | 2007-09-11 21:17:48 +0200 (Tue, 11 Sep 2007) | 3 lines
Disable some tests that fail on the 'ppc Debian unstable' buildbot to
find out if they cause the segfault on the 'alpha Debian' machine.
........
r58108 | brett.cannon | 2007-09-11 23:02:28 +0200 (Tue, 11 Sep 2007) | 6 lines
Generators had their throw() method allowing string exceptions. That's a
no-no.
Fixes issue #1147. Need to fix 2.5 to raise a proper warning if a string
exception is passed in.
........
r58112 | georg.brandl | 2007-09-12 20:03:51 +0200 (Wed, 12 Sep 2007) | 3 lines
New documentation page for the bdb module.
(This doesn't need to be merged to Py3k.)
........
r58114 | georg.brandl | 2007-09-12 20:05:57 +0200 (Wed, 12 Sep 2007) | 2 lines
Bug #1152: use non-deprecated name in example.
........
r58115 | georg.brandl | 2007-09-12 20:08:33 +0200 (Wed, 12 Sep 2007) | 2 lines
Fix #1122: wrong return type documented for various _Size() functions.
........
r58117 | georg.brandl | 2007-09-12 20:10:56 +0200 (Wed, 12 Sep 2007) | 2 lines
Fix #1139: PyFile_Encoding really is PyFile_SetEncoding.
........
r58119 | georg.brandl | 2007-09-12 20:29:18 +0200 (Wed, 12 Sep 2007) | 2 lines
bug #1154: release memory allocated by "es" PyArg_ParseTuple format specifier.
........
r58121 | bill.janssen | 2007-09-12 20:52:05 +0200 (Wed, 12 Sep 2007) | 1 line
root certificate for https://svn.python.org/, used in test_ssl
........
r58122 | georg.brandl | 2007-09-12 21:00:07 +0200 (Wed, 12 Sep 2007) | 3 lines
Bug #1153: repr.repr() now doesn't require set and dictionary items
to be orderable to properly represent them.
........
r58125 | georg.brandl | 2007-09-12 21:29:28 +0200 (Wed, 12 Sep 2007) | 4 lines
#1120: put explicit version in the shebang lines of pydoc, idle
and smtpd.py scripts that are installed by setup.py. That way, they
work when only "make altinstall" is used.
........
r58139 | mark.summerfield | 2007-09-13 16:54:30 +0200 (Thu, 13 Sep 2007) | 9 lines
Replaced variable o with obj in operator.rst because o is easy to
confuse.
Added a note about Python 3's collections.Mapping etc., above section
that describes isMappingType() etc.
Added xrefs between os, os.path, fileinput, and open().
........
r58143 | facundo.batista | 2007-09-13 20:13:15 +0200 (Thu, 13 Sep 2007) | 7 lines
Merged the decimal-branch (revisions 54886 to 58140). Decimal is now
fully updated to the latests Decimal Specification (v1.66) and the
latests test cases (v2.56).
Thanks to Mark Dickinson for all his help during this process.
........
r58145 | facundo.batista | 2007-09-13 20:42:09 +0200 (Thu, 13 Sep 2007) | 7 lines
Put the parameter watchexp back in (changed watchexp from an int
to a bool). Also second argument to watchexp is now converted
to Decimal, just as with all the other two-argument operations.
Thanks Mark Dickinson.
........
r58147 | andrew.kuchling | 2007-09-14 00:49:34 +0200 (Fri, 14 Sep 2007) | 1 line
Add various items
........
r58148 | andrew.kuchling | 2007-09-14 00:50:10 +0200 (Fri, 14 Sep 2007) | 1 line
Make target unique
........
r58154 | facundo.batista | 2007-09-14 20:58:34 +0200 (Fri, 14 Sep 2007) | 3 lines
Included the new functions, and new descriptions.
........
r58155 | thomas.heller | 2007-09-14 21:40:35 +0200 (Fri, 14 Sep 2007) | 2 lines
ctypes.util.find_library uses dump(1) instead of objdump(1) on Solaris.
Fixes issue #1777530; will backport to release25-maint.
........
r58159 | facundo.batista | 2007-09-14 23:29:52 +0200 (Fri, 14 Sep 2007) | 3 lines
Some additions (examples and a bit on the tutorial).
........
r58160 | georg.brandl | 2007-09-15 18:53:36 +0200 (Sat, 15 Sep 2007) | 2 lines
Remove bdb from the "undocumented modules" list.
........
r58164 | bill.janssen | 2007-09-17 00:06:00 +0200 (Mon, 17 Sep 2007) | 15 lines
Add support for asyncore server-side SSL support. This requires
adding the 'makefile' method to ssl.SSLSocket, and importing the
requisite fakefile class from socket.py, and making the appropriate
changes to it to make it use the SSL connection.
Added sample HTTPS server to test_ssl.py, and test that uses it.
Change SSL tests to use https://svn.python.org/, instead of
www.sf.net and pop.gmail.com.
Added utility function to ssl module, get_server_certificate,
to wrap up the several things to be done to pull a certificate
from a remote server.
........
r58173 | bill.janssen | 2007-09-17 01:16:46 +0200 (Mon, 17 Sep 2007) | 1 line
use binary mode when reading files for testAsyncore to make Windows happy
........
r58175 | raymond.hettinger | 2007-09-17 02:55:00 +0200 (Mon, 17 Sep 2007) | 7 lines
Sync-up named tuples with the latest version of the ASPN recipe.
Allows optional commas in the field-name spec (help when named tuples are used in conjuction with sql queries).
Adds the __fields__ attribute for introspection and to support conversion to dictionary form.
Adds a __replace__() method similar to str.replace() but using a named field as a target.
Clean-up spelling and presentation in doc-strings.
........
r58176 | brett.cannon | 2007-09-17 05:28:34 +0200 (Mon, 17 Sep 2007) | 5 lines
Add a bunch of GIL release/acquire points in tp_print implementations and for
PyObject_Print().
Closes issue #1164.
........
r58177 | sean.reifschneider | 2007-09-17 07:45:04 +0200 (Mon, 17 Sep 2007) | 2 lines
issue1597011: Fix for bz2 module corner-case error due to error checking bug.
........
r58180 | facundo.batista | 2007-09-17 18:26:50 +0200 (Mon, 17 Sep 2007) | 3 lines
Decimal is updated, :)
........
r58181 | facundo.batista | 2007-09-17 19:30:13 +0200 (Mon, 17 Sep 2007) | 5 lines
The methods always return Decimal classes, even if they're
executed through a subclass (thanks Mark Dickinson).
Added a bit of testing for this.
........
r58183 | sean.reifschneider | 2007-09-17 22:53:21 +0200 (Mon, 17 Sep 2007) | 2 lines
issue1082: Fixing platform and system for Vista.
........
r58185 | andrew.kuchling | 2007-09-18 03:36:16 +0200 (Tue, 18 Sep 2007) | 1 line
Add item; sort properly
........
r58186 | raymond.hettinger | 2007-09-18 05:33:19 +0200 (Tue, 18 Sep 2007) | 1 line
Handle corner cased on 0-tuples and 1-tuples. Add verbose option so people can see how it works.
........
r58192 | georg.brandl | 2007-09-18 09:24:40 +0200 (Tue, 18 Sep 2007) | 2 lines
A bit of reordering, also show more subheadings in the lang ref index.
........
r58193 | facundo.batista | 2007-09-18 18:53:18 +0200 (Tue, 18 Sep 2007) | 4 lines
Speed up of the various division operations (remainder, divide,
divideint and divmod). Thanks Mark Dickinson.
........
r58197 | raymond.hettinger | 2007-09-19 00:18:02 +0200 (Wed, 19 Sep 2007) | 1 line
Cleanup docs for NamedTuple.
........
2007-09-19 00:06:30 -03:00
|
|
|
Py_END_ALLOW_THREADS
|
1990-10-14 09:07:46 -03:00
|
|
|
}
|
1991-06-07 13:10:43 -03:00
|
|
|
else {
|
|
|
|
if (op->ob_refcnt <= 0)
|
2006-03-01 01:41:20 -04:00
|
|
|
/* XXX(twouters) cast refcount to long until %zd is
|
|
|
|
universally available */
|
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r58096 | brett.cannon | 2007-09-10 23:38:27 +0200 (Mon, 10 Sep 2007) | 4 lines
Fix a possible segfault from recursing too deep to get the repr of a list.
Closes issue #1096.
........
r58097 | bill.janssen | 2007-09-10 23:51:02 +0200 (Mon, 10 Sep 2007) | 33 lines
More work on SSL support.
* Much expanded test suite:
All protocols tested against all other protocols.
All protocols tested with all certificate options.
Tests for bad key and bad cert.
Test of STARTTLS functionality.
Test of RAND_* functions.
* Fixes for threading/malloc bug.
* Issue 1065 fixed:
sslsocket class renamed to SSLSocket.
sslerror class renamed to SSLError.
Function "wrap_socket" now used to wrap an existing socket.
* Issue 1583946 finally fixed:
Support for subjectAltName added.
Subject name now returned as proper DN list of RDNs.
* SSLError exported from socket as "sslerror".
* RAND_* functions properly exported from ssl.py.
* Documentation improved:
Example of how to create a self-signed certificate.
Better indexing.
........
r58098 | guido.van.rossum | 2007-09-11 00:02:25 +0200 (Tue, 11 Sep 2007) | 9 lines
Patch # 1140 (my code, approved by Effbot).
Make sure the type of the return value of re.sub(x, y, z) is the type
of y+x (i.e. unicode if either is unicode, str if they are both str)
even if there are no substitutions or if x==z (which triggered various
special cases in join_list()).
Could be backported to 2.5; no need to port to 3.0.
........
r58099 | guido.van.rossum | 2007-09-11 00:36:02 +0200 (Tue, 11 Sep 2007) | 8 lines
Patch # 1026 by Benjamin Aranguren (with Alex Martelli):
Backport abc.py and isinstance/issubclass overloading to 2.6.
I had to backport test_typechecks.py myself, and make one small change
to abc.py to avoid duplicate work when x.__class__ and type(x) are the
same.
........
r58100 | bill.janssen | 2007-09-11 01:41:24 +0200 (Tue, 11 Sep 2007) | 3 lines
A better way of finding an open port to test with.
........
r58101 | bill.janssen | 2007-09-11 03:09:19 +0200 (Tue, 11 Sep 2007) | 4 lines
Make sure test_ssl doesn't reference the ssl module in a
context where it can't be imported.
........
r58102 | bill.janssen | 2007-09-11 04:42:07 +0200 (Tue, 11 Sep 2007) | 3 lines
Fix some documentation bugs.
........
r58103 | nick.coghlan | 2007-09-11 16:01:18 +0200 (Tue, 11 Sep 2007) | 1 line
Always use the -E flag when spawning subprocesses in test_cmd_line (Issue 1056)
........
r58106 | thomas.heller | 2007-09-11 21:17:48 +0200 (Tue, 11 Sep 2007) | 3 lines
Disable some tests that fail on the 'ppc Debian unstable' buildbot to
find out if they cause the segfault on the 'alpha Debian' machine.
........
r58108 | brett.cannon | 2007-09-11 23:02:28 +0200 (Tue, 11 Sep 2007) | 6 lines
Generators had their throw() method allowing string exceptions. That's a
no-no.
Fixes issue #1147. Need to fix 2.5 to raise a proper warning if a string
exception is passed in.
........
r58112 | georg.brandl | 2007-09-12 20:03:51 +0200 (Wed, 12 Sep 2007) | 3 lines
New documentation page for the bdb module.
(This doesn't need to be merged to Py3k.)
........
r58114 | georg.brandl | 2007-09-12 20:05:57 +0200 (Wed, 12 Sep 2007) | 2 lines
Bug #1152: use non-deprecated name in example.
........
r58115 | georg.brandl | 2007-09-12 20:08:33 +0200 (Wed, 12 Sep 2007) | 2 lines
Fix #1122: wrong return type documented for various _Size() functions.
........
r58117 | georg.brandl | 2007-09-12 20:10:56 +0200 (Wed, 12 Sep 2007) | 2 lines
Fix #1139: PyFile_Encoding really is PyFile_SetEncoding.
........
r58119 | georg.brandl | 2007-09-12 20:29:18 +0200 (Wed, 12 Sep 2007) | 2 lines
bug #1154: release memory allocated by "es" PyArg_ParseTuple format specifier.
........
r58121 | bill.janssen | 2007-09-12 20:52:05 +0200 (Wed, 12 Sep 2007) | 1 line
root certificate for https://svn.python.org/, used in test_ssl
........
r58122 | georg.brandl | 2007-09-12 21:00:07 +0200 (Wed, 12 Sep 2007) | 3 lines
Bug #1153: repr.repr() now doesn't require set and dictionary items
to be orderable to properly represent them.
........
r58125 | georg.brandl | 2007-09-12 21:29:28 +0200 (Wed, 12 Sep 2007) | 4 lines
#1120: put explicit version in the shebang lines of pydoc, idle
and smtpd.py scripts that are installed by setup.py. That way, they
work when only "make altinstall" is used.
........
r58139 | mark.summerfield | 2007-09-13 16:54:30 +0200 (Thu, 13 Sep 2007) | 9 lines
Replaced variable o with obj in operator.rst because o is easy to
confuse.
Added a note about Python 3's collections.Mapping etc., above section
that describes isMappingType() etc.
Added xrefs between os, os.path, fileinput, and open().
........
r58143 | facundo.batista | 2007-09-13 20:13:15 +0200 (Thu, 13 Sep 2007) | 7 lines
Merged the decimal-branch (revisions 54886 to 58140). Decimal is now
fully updated to the latests Decimal Specification (v1.66) and the
latests test cases (v2.56).
Thanks to Mark Dickinson for all his help during this process.
........
r58145 | facundo.batista | 2007-09-13 20:42:09 +0200 (Thu, 13 Sep 2007) | 7 lines
Put the parameter watchexp back in (changed watchexp from an int
to a bool). Also second argument to watchexp is now converted
to Decimal, just as with all the other two-argument operations.
Thanks Mark Dickinson.
........
r58147 | andrew.kuchling | 2007-09-14 00:49:34 +0200 (Fri, 14 Sep 2007) | 1 line
Add various items
........
r58148 | andrew.kuchling | 2007-09-14 00:50:10 +0200 (Fri, 14 Sep 2007) | 1 line
Make target unique
........
r58154 | facundo.batista | 2007-09-14 20:58:34 +0200 (Fri, 14 Sep 2007) | 3 lines
Included the new functions, and new descriptions.
........
r58155 | thomas.heller | 2007-09-14 21:40:35 +0200 (Fri, 14 Sep 2007) | 2 lines
ctypes.util.find_library uses dump(1) instead of objdump(1) on Solaris.
Fixes issue #1777530; will backport to release25-maint.
........
r58159 | facundo.batista | 2007-09-14 23:29:52 +0200 (Fri, 14 Sep 2007) | 3 lines
Some additions (examples and a bit on the tutorial).
........
r58160 | georg.brandl | 2007-09-15 18:53:36 +0200 (Sat, 15 Sep 2007) | 2 lines
Remove bdb from the "undocumented modules" list.
........
r58164 | bill.janssen | 2007-09-17 00:06:00 +0200 (Mon, 17 Sep 2007) | 15 lines
Add support for asyncore server-side SSL support. This requires
adding the 'makefile' method to ssl.SSLSocket, and importing the
requisite fakefile class from socket.py, and making the appropriate
changes to it to make it use the SSL connection.
Added sample HTTPS server to test_ssl.py, and test that uses it.
Change SSL tests to use https://svn.python.org/, instead of
www.sf.net and pop.gmail.com.
Added utility function to ssl module, get_server_certificate,
to wrap up the several things to be done to pull a certificate
from a remote server.
........
r58173 | bill.janssen | 2007-09-17 01:16:46 +0200 (Mon, 17 Sep 2007) | 1 line
use binary mode when reading files for testAsyncore to make Windows happy
........
r58175 | raymond.hettinger | 2007-09-17 02:55:00 +0200 (Mon, 17 Sep 2007) | 7 lines
Sync-up named tuples with the latest version of the ASPN recipe.
Allows optional commas in the field-name spec (help when named tuples are used in conjuction with sql queries).
Adds the __fields__ attribute for introspection and to support conversion to dictionary form.
Adds a __replace__() method similar to str.replace() but using a named field as a target.
Clean-up spelling and presentation in doc-strings.
........
r58176 | brett.cannon | 2007-09-17 05:28:34 +0200 (Mon, 17 Sep 2007) | 5 lines
Add a bunch of GIL release/acquire points in tp_print implementations and for
PyObject_Print().
Closes issue #1164.
........
r58177 | sean.reifschneider | 2007-09-17 07:45:04 +0200 (Mon, 17 Sep 2007) | 2 lines
issue1597011: Fix for bz2 module corner-case error due to error checking bug.
........
r58180 | facundo.batista | 2007-09-17 18:26:50 +0200 (Mon, 17 Sep 2007) | 3 lines
Decimal is updated, :)
........
r58181 | facundo.batista | 2007-09-17 19:30:13 +0200 (Mon, 17 Sep 2007) | 5 lines
The methods always return Decimal classes, even if they're
executed through a subclass (thanks Mark Dickinson).
Added a bit of testing for this.
........
r58183 | sean.reifschneider | 2007-09-17 22:53:21 +0200 (Mon, 17 Sep 2007) | 2 lines
issue1082: Fixing platform and system for Vista.
........
r58185 | andrew.kuchling | 2007-09-18 03:36:16 +0200 (Tue, 18 Sep 2007) | 1 line
Add item; sort properly
........
r58186 | raymond.hettinger | 2007-09-18 05:33:19 +0200 (Tue, 18 Sep 2007) | 1 line
Handle corner cased on 0-tuples and 1-tuples. Add verbose option so people can see how it works.
........
r58192 | georg.brandl | 2007-09-18 09:24:40 +0200 (Tue, 18 Sep 2007) | 2 lines
A bit of reordering, also show more subheadings in the lang ref index.
........
r58193 | facundo.batista | 2007-09-18 18:53:18 +0200 (Tue, 18 Sep 2007) | 4 lines
Speed up of the various division operations (remainder, divide,
divideint and divmod). Thanks Mark Dickinson.
........
r58197 | raymond.hettinger | 2007-09-19 00:18:02 +0200 (Wed, 19 Sep 2007) | 1 line
Cleanup docs for NamedTuple.
........
2007-09-19 00:06:30 -03:00
|
|
|
Py_BEGIN_ALLOW_THREADS
|
2006-03-01 01:41:20 -04:00
|
|
|
fprintf(fp, "<refcnt %ld at %p>",
|
|
|
|
(long)op->ob_refcnt, op);
|
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r58096 | brett.cannon | 2007-09-10 23:38:27 +0200 (Mon, 10 Sep 2007) | 4 lines
Fix a possible segfault from recursing too deep to get the repr of a list.
Closes issue #1096.
........
r58097 | bill.janssen | 2007-09-10 23:51:02 +0200 (Mon, 10 Sep 2007) | 33 lines
More work on SSL support.
* Much expanded test suite:
All protocols tested against all other protocols.
All protocols tested with all certificate options.
Tests for bad key and bad cert.
Test of STARTTLS functionality.
Test of RAND_* functions.
* Fixes for threading/malloc bug.
* Issue 1065 fixed:
sslsocket class renamed to SSLSocket.
sslerror class renamed to SSLError.
Function "wrap_socket" now used to wrap an existing socket.
* Issue 1583946 finally fixed:
Support for subjectAltName added.
Subject name now returned as proper DN list of RDNs.
* SSLError exported from socket as "sslerror".
* RAND_* functions properly exported from ssl.py.
* Documentation improved:
Example of how to create a self-signed certificate.
Better indexing.
........
r58098 | guido.van.rossum | 2007-09-11 00:02:25 +0200 (Tue, 11 Sep 2007) | 9 lines
Patch # 1140 (my code, approved by Effbot).
Make sure the type of the return value of re.sub(x, y, z) is the type
of y+x (i.e. unicode if either is unicode, str if they are both str)
even if there are no substitutions or if x==z (which triggered various
special cases in join_list()).
Could be backported to 2.5; no need to port to 3.0.
........
r58099 | guido.van.rossum | 2007-09-11 00:36:02 +0200 (Tue, 11 Sep 2007) | 8 lines
Patch # 1026 by Benjamin Aranguren (with Alex Martelli):
Backport abc.py and isinstance/issubclass overloading to 2.6.
I had to backport test_typechecks.py myself, and make one small change
to abc.py to avoid duplicate work when x.__class__ and type(x) are the
same.
........
r58100 | bill.janssen | 2007-09-11 01:41:24 +0200 (Tue, 11 Sep 2007) | 3 lines
A better way of finding an open port to test with.
........
r58101 | bill.janssen | 2007-09-11 03:09:19 +0200 (Tue, 11 Sep 2007) | 4 lines
Make sure test_ssl doesn't reference the ssl module in a
context where it can't be imported.
........
r58102 | bill.janssen | 2007-09-11 04:42:07 +0200 (Tue, 11 Sep 2007) | 3 lines
Fix some documentation bugs.
........
r58103 | nick.coghlan | 2007-09-11 16:01:18 +0200 (Tue, 11 Sep 2007) | 1 line
Always use the -E flag when spawning subprocesses in test_cmd_line (Issue 1056)
........
r58106 | thomas.heller | 2007-09-11 21:17:48 +0200 (Tue, 11 Sep 2007) | 3 lines
Disable some tests that fail on the 'ppc Debian unstable' buildbot to
find out if they cause the segfault on the 'alpha Debian' machine.
........
r58108 | brett.cannon | 2007-09-11 23:02:28 +0200 (Tue, 11 Sep 2007) | 6 lines
Generators had their throw() method allowing string exceptions. That's a
no-no.
Fixes issue #1147. Need to fix 2.5 to raise a proper warning if a string
exception is passed in.
........
r58112 | georg.brandl | 2007-09-12 20:03:51 +0200 (Wed, 12 Sep 2007) | 3 lines
New documentation page for the bdb module.
(This doesn't need to be merged to Py3k.)
........
r58114 | georg.brandl | 2007-09-12 20:05:57 +0200 (Wed, 12 Sep 2007) | 2 lines
Bug #1152: use non-deprecated name in example.
........
r58115 | georg.brandl | 2007-09-12 20:08:33 +0200 (Wed, 12 Sep 2007) | 2 lines
Fix #1122: wrong return type documented for various _Size() functions.
........
r58117 | georg.brandl | 2007-09-12 20:10:56 +0200 (Wed, 12 Sep 2007) | 2 lines
Fix #1139: PyFile_Encoding really is PyFile_SetEncoding.
........
r58119 | georg.brandl | 2007-09-12 20:29:18 +0200 (Wed, 12 Sep 2007) | 2 lines
bug #1154: release memory allocated by "es" PyArg_ParseTuple format specifier.
........
r58121 | bill.janssen | 2007-09-12 20:52:05 +0200 (Wed, 12 Sep 2007) | 1 line
root certificate for https://svn.python.org/, used in test_ssl
........
r58122 | georg.brandl | 2007-09-12 21:00:07 +0200 (Wed, 12 Sep 2007) | 3 lines
Bug #1153: repr.repr() now doesn't require set and dictionary items
to be orderable to properly represent them.
........
r58125 | georg.brandl | 2007-09-12 21:29:28 +0200 (Wed, 12 Sep 2007) | 4 lines
#1120: put explicit version in the shebang lines of pydoc, idle
and smtpd.py scripts that are installed by setup.py. That way, they
work when only "make altinstall" is used.
........
r58139 | mark.summerfield | 2007-09-13 16:54:30 +0200 (Thu, 13 Sep 2007) | 9 lines
Replaced variable o with obj in operator.rst because o is easy to
confuse.
Added a note about Python 3's collections.Mapping etc., above section
that describes isMappingType() etc.
Added xrefs between os, os.path, fileinput, and open().
........
r58143 | facundo.batista | 2007-09-13 20:13:15 +0200 (Thu, 13 Sep 2007) | 7 lines
Merged the decimal-branch (revisions 54886 to 58140). Decimal is now
fully updated to the latests Decimal Specification (v1.66) and the
latests test cases (v2.56).
Thanks to Mark Dickinson for all his help during this process.
........
r58145 | facundo.batista | 2007-09-13 20:42:09 +0200 (Thu, 13 Sep 2007) | 7 lines
Put the parameter watchexp back in (changed watchexp from an int
to a bool). Also second argument to watchexp is now converted
to Decimal, just as with all the other two-argument operations.
Thanks Mark Dickinson.
........
r58147 | andrew.kuchling | 2007-09-14 00:49:34 +0200 (Fri, 14 Sep 2007) | 1 line
Add various items
........
r58148 | andrew.kuchling | 2007-09-14 00:50:10 +0200 (Fri, 14 Sep 2007) | 1 line
Make target unique
........
r58154 | facundo.batista | 2007-09-14 20:58:34 +0200 (Fri, 14 Sep 2007) | 3 lines
Included the new functions, and new descriptions.
........
r58155 | thomas.heller | 2007-09-14 21:40:35 +0200 (Fri, 14 Sep 2007) | 2 lines
ctypes.util.find_library uses dump(1) instead of objdump(1) on Solaris.
Fixes issue #1777530; will backport to release25-maint.
........
r58159 | facundo.batista | 2007-09-14 23:29:52 +0200 (Fri, 14 Sep 2007) | 3 lines
Some additions (examples and a bit on the tutorial).
........
r58160 | georg.brandl | 2007-09-15 18:53:36 +0200 (Sat, 15 Sep 2007) | 2 lines
Remove bdb from the "undocumented modules" list.
........
r58164 | bill.janssen | 2007-09-17 00:06:00 +0200 (Mon, 17 Sep 2007) | 15 lines
Add support for asyncore server-side SSL support. This requires
adding the 'makefile' method to ssl.SSLSocket, and importing the
requisite fakefile class from socket.py, and making the appropriate
changes to it to make it use the SSL connection.
Added sample HTTPS server to test_ssl.py, and test that uses it.
Change SSL tests to use https://svn.python.org/, instead of
www.sf.net and pop.gmail.com.
Added utility function to ssl module, get_server_certificate,
to wrap up the several things to be done to pull a certificate
from a remote server.
........
r58173 | bill.janssen | 2007-09-17 01:16:46 +0200 (Mon, 17 Sep 2007) | 1 line
use binary mode when reading files for testAsyncore to make Windows happy
........
r58175 | raymond.hettinger | 2007-09-17 02:55:00 +0200 (Mon, 17 Sep 2007) | 7 lines
Sync-up named tuples with the latest version of the ASPN recipe.
Allows optional commas in the field-name spec (help when named tuples are used in conjuction with sql queries).
Adds the __fields__ attribute for introspection and to support conversion to dictionary form.
Adds a __replace__() method similar to str.replace() but using a named field as a target.
Clean-up spelling and presentation in doc-strings.
........
r58176 | brett.cannon | 2007-09-17 05:28:34 +0200 (Mon, 17 Sep 2007) | 5 lines
Add a bunch of GIL release/acquire points in tp_print implementations and for
PyObject_Print().
Closes issue #1164.
........
r58177 | sean.reifschneider | 2007-09-17 07:45:04 +0200 (Mon, 17 Sep 2007) | 2 lines
issue1597011: Fix for bz2 module corner-case error due to error checking bug.
........
r58180 | facundo.batista | 2007-09-17 18:26:50 +0200 (Mon, 17 Sep 2007) | 3 lines
Decimal is updated, :)
........
r58181 | facundo.batista | 2007-09-17 19:30:13 +0200 (Mon, 17 Sep 2007) | 5 lines
The methods always return Decimal classes, even if they're
executed through a subclass (thanks Mark Dickinson).
Added a bit of testing for this.
........
r58183 | sean.reifschneider | 2007-09-17 22:53:21 +0200 (Mon, 17 Sep 2007) | 2 lines
issue1082: Fixing platform and system for Vista.
........
r58185 | andrew.kuchling | 2007-09-18 03:36:16 +0200 (Tue, 18 Sep 2007) | 1 line
Add item; sort properly
........
r58186 | raymond.hettinger | 2007-09-18 05:33:19 +0200 (Tue, 18 Sep 2007) | 1 line
Handle corner cased on 0-tuples and 1-tuples. Add verbose option so people can see how it works.
........
r58192 | georg.brandl | 2007-09-18 09:24:40 +0200 (Tue, 18 Sep 2007) | 2 lines
A bit of reordering, also show more subheadings in the lang ref index.
........
r58193 | facundo.batista | 2007-09-18 18:53:18 +0200 (Tue, 18 Sep 2007) | 4 lines
Speed up of the various division operations (remainder, divide,
divideint and divmod). Thanks Mark Dickinson.
........
r58197 | raymond.hettinger | 2007-09-19 00:18:02 +0200 (Wed, 19 Sep 2007) | 1 line
Cleanup docs for NamedTuple.
........
2007-09-19 00:06:30 -03:00
|
|
|
Py_END_ALLOW_THREADS
|
2007-08-07 16:51:00 -03:00
|
|
|
else {
|
2001-05-01 13:53:37 -03:00
|
|
|
PyObject *s;
|
|
|
|
if (flags & Py_PRINT_RAW)
|
|
|
|
s = PyObject_Str(op);
|
|
|
|
else
|
2007-08-09 17:47:59 -03:00
|
|
|
s = PyObject_Repr(op);
|
2001-05-01 13:53:37 -03:00
|
|
|
if (s == NULL)
|
|
|
|
ret = -1;
|
2008-05-26 10:28:38 -03:00
|
|
|
else if (PyBytes_Check(s)) {
|
|
|
|
fwrite(PyBytes_AS_STRING(s), 1,
|
|
|
|
PyBytes_GET_SIZE(s), fp);
|
2007-08-09 17:47:59 -03:00
|
|
|
}
|
|
|
|
else if (PyUnicode_Check(s)) {
|
|
|
|
PyObject *t;
|
|
|
|
t = _PyUnicode_AsDefaultEncodedString(s, NULL);
|
|
|
|
if (t == NULL)
|
|
|
|
ret = 0;
|
|
|
|
else {
|
2008-05-26 10:28:38 -03:00
|
|
|
fwrite(PyBytes_AS_STRING(t), 1,
|
|
|
|
PyBytes_GET_SIZE(t), fp);
|
2007-08-09 17:47:59 -03:00
|
|
|
}
|
|
|
|
}
|
1992-09-03 17:32:55 -03:00
|
|
|
else {
|
2007-08-09 17:47:59 -03:00
|
|
|
PyErr_Format(PyExc_TypeError,
|
|
|
|
"str() or repr() returned '%.100s'",
|
|
|
|
s->ob_type->tp_name);
|
|
|
|
ret = -1;
|
1992-09-03 17:32:55 -03:00
|
|
|
}
|
2001-05-01 13:53:37 -03:00
|
|
|
Py_XDECREF(s);
|
1992-09-03 17:32:55 -03:00
|
|
|
}
|
1991-06-07 13:10:43 -03:00
|
|
|
}
|
1991-07-27 18:40:24 -03:00
|
|
|
if (ret == 0) {
|
|
|
|
if (ferror(fp)) {
|
1997-05-02 00:12:38 -03:00
|
|
|
PyErr_SetFromErrno(PyExc_IOError);
|
1991-07-27 18:40:24 -03:00
|
|
|
clearerr(fp);
|
|
|
|
ret = -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return ret;
|
1990-10-14 09:07:46 -03:00
|
|
|
}
|
|
|
|
|
2003-01-13 16:13:12 -04:00
|
|
|
int
|
|
|
|
PyObject_Print(PyObject *op, FILE *fp, int flags)
|
|
|
|
{
|
|
|
|
return internal_print(op, fp, flags, 0);
|
|
|
|
}
|
|
|
|
|
2006-08-21 20:36:26 -03:00
|
|
|
/* For debugging convenience. Set a breakpoint here and call it from your DLL */
|
|
|
|
void
|
Merged revisions 53451-53537 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r53454 | brett.cannon | 2007-01-15 20:12:08 +0100 (Mon, 15 Jan 2007) | 3 lines
Add a note for strptime that just because strftime supports some extra
directive that is not documented that strptime will as well.
........
r53458 | vinay.sajip | 2007-01-16 10:50:07 +0100 (Tue, 16 Jan 2007) | 1 line
Updated rotating file handlers to use _open().
........
r53459 | marc-andre.lemburg | 2007-01-16 14:03:06 +0100 (Tue, 16 Jan 2007) | 2 lines
Add news items for the recent pybench and platform changes.
........
r53460 | sjoerd.mullender | 2007-01-16 17:42:38 +0100 (Tue, 16 Jan 2007) | 4 lines
Fixed ntpath.expandvars to not replace references to non-existing
variables with nothing. Also added tests.
This fixes bug #494589.
........
r53464 | neal.norwitz | 2007-01-17 07:23:51 +0100 (Wed, 17 Jan 2007) | 1 line
Give Calvin Spealman access for python-dev summaries.
........
r53465 | neal.norwitz | 2007-01-17 09:37:26 +0100 (Wed, 17 Jan 2007) | 1 line
Remove Calvin since he only has access to the website currently.
........
r53466 | thomas.heller | 2007-01-17 10:40:34 +0100 (Wed, 17 Jan 2007) | 2 lines
Replace C++ comments with C comments.
........
r53472 | andrew.kuchling | 2007-01-17 20:55:06 +0100 (Wed, 17 Jan 2007) | 1 line
[Part of bug #1599254] Add suggestion to Mailbox docs to use Maildir, and warn user to lock/unlock mailboxes when modifying them
........
r53475 | georg.brandl | 2007-01-17 22:09:04 +0100 (Wed, 17 Jan 2007) | 2 lines
Bug #1637967: missing //= operator in list.
........
r53477 | georg.brandl | 2007-01-17 22:19:58 +0100 (Wed, 17 Jan 2007) | 2 lines
Bug #1629125: fix wrong data type (int -> Py_ssize_t) in PyDict_Next docs.
........
r53481 | neal.norwitz | 2007-01-18 06:40:58 +0100 (Thu, 18 Jan 2007) | 1 line
Try reverting part of r53145 that seems to cause the Windows buildbots to fail in test_uu.UUFileTest.test_encode
........
r53482 | fred.drake | 2007-01-18 06:42:30 +0100 (Thu, 18 Jan 2007) | 1 line
add missing version entry
........
r53483 | neal.norwitz | 2007-01-18 07:20:55 +0100 (Thu, 18 Jan 2007) | 7 lines
This test doesn't pass on Windows. The cause seems to be that chmod
doesn't support the same funcationality as on Unix. I'm not sure if
this fix is the best (or if it will even work)--it's a test to see
if the buildbots start passing again.
It might be better to not even run this test if it's windows (or non-posix).
........
r53488 | neal.norwitz | 2007-01-19 06:53:33 +0100 (Fri, 19 Jan 2007) | 1 line
SF #1635217, Fix unbalanced paren
........
r53489 | martin.v.loewis | 2007-01-19 07:42:22 +0100 (Fri, 19 Jan 2007) | 3 lines
Prefix AST symbols with _Py_. Fixes #1637022.
Will backport.
........
r53497 | martin.v.loewis | 2007-01-19 19:01:38 +0100 (Fri, 19 Jan 2007) | 2 lines
Add UUIDs for 2.5.1 and 2.5.2
........
r53499 | raymond.hettinger | 2007-01-19 19:07:18 +0100 (Fri, 19 Jan 2007) | 1 line
SF# 1635892: Fix docs for betavariate's input parameters .
........
r53503 | martin.v.loewis | 2007-01-20 15:05:39 +0100 (Sat, 20 Jan 2007) | 2 lines
Merge 53501 and 53502 from 25 branch:
Add /GS- for AMD64 and Itanium builds where missing.
........
r53504 | walter.doerwald | 2007-01-20 18:28:31 +0100 (Sat, 20 Jan 2007) | 2 lines
Port test_resource.py to unittest.
........
r53505 | walter.doerwald | 2007-01-20 19:19:33 +0100 (Sat, 20 Jan 2007) | 2 lines
Add argument tests an calls of resource.getrusage().
........
r53506 | walter.doerwald | 2007-01-20 20:03:17 +0100 (Sat, 20 Jan 2007) | 2 lines
resource.RUSAGE_BOTH might not exist.
........
r53507 | walter.doerwald | 2007-01-21 00:07:28 +0100 (Sun, 21 Jan 2007) | 2 lines
Port test_new.py to unittest.
........
r53508 | martin.v.loewis | 2007-01-21 10:33:07 +0100 (Sun, 21 Jan 2007) | 2 lines
Patch #1610575: Add support for _Bool to struct.
........
r53509 | georg.brandl | 2007-01-21 11:28:43 +0100 (Sun, 21 Jan 2007) | 3 lines
Bug #1486663: don't reject keyword arguments for subclasses of builtin
types.
........
r53511 | georg.brandl | 2007-01-21 11:35:10 +0100 (Sun, 21 Jan 2007) | 2 lines
Patch #1627441: close sockets properly in urllib2.
........
r53517 | georg.brandl | 2007-01-22 20:40:21 +0100 (Mon, 22 Jan 2007) | 3 lines
Use new email module names (#1637162, #1637159, #1637157).
........
r53518 | andrew.kuchling | 2007-01-22 21:26:40 +0100 (Mon, 22 Jan 2007) | 1 line
Improve pattern used for mbox 'From' lines; add a simple test
........
r53519 | andrew.kuchling | 2007-01-22 21:27:50 +0100 (Mon, 22 Jan 2007) | 1 line
Make comment match the code
........
r53522 | georg.brandl | 2007-01-22 22:10:33 +0100 (Mon, 22 Jan 2007) | 2 lines
Bug #1249573: fix rfc822.parsedate not accepting a certain date format
........
r53524 | georg.brandl | 2007-01-22 22:23:41 +0100 (Mon, 22 Jan 2007) | 2 lines
Bug #1627316: handle error in condition/ignore pdb commands more gracefully.
........
r53526 | lars.gustaebel | 2007-01-23 12:17:33 +0100 (Tue, 23 Jan 2007) | 4 lines
Patch #1507247: tarfile.py: use current umask for intermediate
directories.
........
r53527 | thomas.wouters | 2007-01-23 14:42:00 +0100 (Tue, 23 Jan 2007) | 13 lines
SF patch #1630975: Fix crash when replacing sys.stdout in sitecustomize
When running the interpreter in an environment that would cause it to set
stdout/stderr/stdin's encoding, having a sitecustomize that would replace
them with something other than PyFile objects would crash the interpreter.
Fix it by simply ignoring the encoding-setting for non-files.
This could do with a test, but I can think of no maintainable and portable
way to test this bug, short of adding a sitecustomize.py to the buildsystem
and have it always run with it (hmmm....)
........
r53528 | thomas.wouters | 2007-01-23 14:50:49 +0100 (Tue, 23 Jan 2007) | 4 lines
Add news entry about last checkin (oops.)
........
r53531 | martin.v.loewis | 2007-01-23 22:11:47 +0100 (Tue, 23 Jan 2007) | 4 lines
Make PyTraceBack_Here use the current thread, not the
frame's thread state. Fixes #1579370.
Will backport.
........
r53535 | brett.cannon | 2007-01-24 00:21:22 +0100 (Wed, 24 Jan 2007) | 5 lines
Fix crasher for when an object's __del__ creates a new weakref to itself.
Patch only fixes new-style classes; classic classes still buggy.
Closes bug #1377858. Already backported.
........
r53536 | walter.doerwald | 2007-01-24 01:42:19 +0100 (Wed, 24 Jan 2007) | 2 lines
Port test_popen.py to unittest.
........
2007-02-01 14:02:27 -04:00
|
|
|
_Py_BreakPoint(void)
|
2006-08-21 20:36:26 -03:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2003-01-13 16:13:12 -04:00
|
|
|
|
2001-01-23 12:24:35 -04:00
|
|
|
/* For debugging convenience. See Misc/gdbinit for some useful gdb hooks */
|
2006-08-21 20:36:26 -03:00
|
|
|
void
|
|
|
|
_PyObject_Dump(PyObject* op)
|
2001-01-23 12:24:35 -04:00
|
|
|
{
|
2001-02-22 18:39:18 -04:00
|
|
|
if (op == NULL)
|
|
|
|
fprintf(stderr, "NULL\n");
|
|
|
|
else {
|
Merged revisions 67654,67676-67677,67681,67692,67725,67761,67784-67785,67787-67788,67802,67848-67850,67862-67864,67880,67882 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r67654 | georg.brandl | 2008-12-07 16:42:09 -0600 (Sun, 07 Dec 2008) | 2 lines
#4457: rewrite __import__() documentation.
........
r67676 | benjamin.peterson | 2008-12-08 20:03:03 -0600 (Mon, 08 Dec 2008) | 1 line
specify how things are copied
........
r67677 | benjamin.peterson | 2008-12-08 20:05:11 -0600 (Mon, 08 Dec 2008) | 1 line
revert unrelated change to installer script
........
r67681 | jeremy.hylton | 2008-12-09 15:03:10 -0600 (Tue, 09 Dec 2008) | 2 lines
Add simple unittests for Request
........
r67692 | amaury.forgeotdarc | 2008-12-10 18:03:42 -0600 (Wed, 10 Dec 2008) | 2 lines
#1030250: correctly pass the dry_run option to the mkpath() function.
........
r67725 | benjamin.peterson | 2008-12-12 22:02:20 -0600 (Fri, 12 Dec 2008) | 1 line
fix incorrect example
........
r67761 | benjamin.peterson | 2008-12-14 11:26:04 -0600 (Sun, 14 Dec 2008) | 1 line
fix missing bracket
........
r67784 | georg.brandl | 2008-12-15 02:33:58 -0600 (Mon, 15 Dec 2008) | 2 lines
#4446: document "platforms" argument for setup().
........
r67785 | georg.brandl | 2008-12-15 02:36:11 -0600 (Mon, 15 Dec 2008) | 2 lines
#4611: fix typo.
........
r67787 | georg.brandl | 2008-12-15 02:58:59 -0600 (Mon, 15 Dec 2008) | 2 lines
#4578: fix has_key() usage in compiler package.
........
r67788 | georg.brandl | 2008-12-15 03:07:39 -0600 (Mon, 15 Dec 2008) | 2 lines
#4568: remove limitation in varargs callback example.
........
r67802 | amaury.forgeotdarc | 2008-12-15 16:29:14 -0600 (Mon, 15 Dec 2008) | 4 lines
#3632: the "pyo" macro from gdbinit can now run when the GIL is released.
Patch by haypo.
........
r67848 | benjamin.peterson | 2008-12-18 20:28:56 -0600 (Thu, 18 Dec 2008) | 1 line
fix typo
........
r67849 | benjamin.peterson | 2008-12-18 20:31:35 -0600 (Thu, 18 Dec 2008) | 1 line
_call_method -> _callmethod and _get_value to _getvalue
........
r67850 | raymond.hettinger | 2008-12-19 03:06:07 -0600 (Fri, 19 Dec 2008) | 9 lines
Fix-up and clean-up docs for int.bit_length().
* Replace dramatic footnote with in-line comment about possible round-off errors in logarithms of large numbers.
* Add comments to the pure python code equivalent.
* replace floor() with int() in the mathematical equivalent so the type is correct (should be an int, not a float).
* add abs() to the mathematical equivalent so that it matches the previous line that it is supposed to be equivalent to.
* make one combined example with a negative input.
........
r67862 | benjamin.peterson | 2008-12-19 20:48:02 -0600 (Fri, 19 Dec 2008) | 1 line
copy sentence from docstring
........
r67863 | benjamin.peterson | 2008-12-19 20:51:26 -0600 (Fri, 19 Dec 2008) | 1 line
add headings
........
r67864 | benjamin.peterson | 2008-12-19 20:57:19 -0600 (Fri, 19 Dec 2008) | 1 line
beef up docstring
........
r67880 | benjamin.peterson | 2008-12-20 16:49:24 -0600 (Sat, 20 Dec 2008) | 1 line
remove redundant sentence
........
r67882 | benjamin.peterson | 2008-12-20 16:59:49 -0600 (Sat, 20 Dec 2008) | 1 line
add some recent releases to the list
........
2008-12-20 20:06:59 -04:00
|
|
|
PyGILState_STATE gil;
|
2001-09-14 12:50:08 -03:00
|
|
|
fprintf(stderr, "object : ");
|
Merged revisions 67654,67676-67677,67681,67692,67725,67761,67784-67785,67787-67788,67802,67848-67850,67862-67864,67880,67882 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r67654 | georg.brandl | 2008-12-07 16:42:09 -0600 (Sun, 07 Dec 2008) | 2 lines
#4457: rewrite __import__() documentation.
........
r67676 | benjamin.peterson | 2008-12-08 20:03:03 -0600 (Mon, 08 Dec 2008) | 1 line
specify how things are copied
........
r67677 | benjamin.peterson | 2008-12-08 20:05:11 -0600 (Mon, 08 Dec 2008) | 1 line
revert unrelated change to installer script
........
r67681 | jeremy.hylton | 2008-12-09 15:03:10 -0600 (Tue, 09 Dec 2008) | 2 lines
Add simple unittests for Request
........
r67692 | amaury.forgeotdarc | 2008-12-10 18:03:42 -0600 (Wed, 10 Dec 2008) | 2 lines
#1030250: correctly pass the dry_run option to the mkpath() function.
........
r67725 | benjamin.peterson | 2008-12-12 22:02:20 -0600 (Fri, 12 Dec 2008) | 1 line
fix incorrect example
........
r67761 | benjamin.peterson | 2008-12-14 11:26:04 -0600 (Sun, 14 Dec 2008) | 1 line
fix missing bracket
........
r67784 | georg.brandl | 2008-12-15 02:33:58 -0600 (Mon, 15 Dec 2008) | 2 lines
#4446: document "platforms" argument for setup().
........
r67785 | georg.brandl | 2008-12-15 02:36:11 -0600 (Mon, 15 Dec 2008) | 2 lines
#4611: fix typo.
........
r67787 | georg.brandl | 2008-12-15 02:58:59 -0600 (Mon, 15 Dec 2008) | 2 lines
#4578: fix has_key() usage in compiler package.
........
r67788 | georg.brandl | 2008-12-15 03:07:39 -0600 (Mon, 15 Dec 2008) | 2 lines
#4568: remove limitation in varargs callback example.
........
r67802 | amaury.forgeotdarc | 2008-12-15 16:29:14 -0600 (Mon, 15 Dec 2008) | 4 lines
#3632: the "pyo" macro from gdbinit can now run when the GIL is released.
Patch by haypo.
........
r67848 | benjamin.peterson | 2008-12-18 20:28:56 -0600 (Thu, 18 Dec 2008) | 1 line
fix typo
........
r67849 | benjamin.peterson | 2008-12-18 20:31:35 -0600 (Thu, 18 Dec 2008) | 1 line
_call_method -> _callmethod and _get_value to _getvalue
........
r67850 | raymond.hettinger | 2008-12-19 03:06:07 -0600 (Fri, 19 Dec 2008) | 9 lines
Fix-up and clean-up docs for int.bit_length().
* Replace dramatic footnote with in-line comment about possible round-off errors in logarithms of large numbers.
* Add comments to the pure python code equivalent.
* replace floor() with int() in the mathematical equivalent so the type is correct (should be an int, not a float).
* add abs() to the mathematical equivalent so that it matches the previous line that it is supposed to be equivalent to.
* make one combined example with a negative input.
........
r67862 | benjamin.peterson | 2008-12-19 20:48:02 -0600 (Fri, 19 Dec 2008) | 1 line
copy sentence from docstring
........
r67863 | benjamin.peterson | 2008-12-19 20:51:26 -0600 (Fri, 19 Dec 2008) | 1 line
add headings
........
r67864 | benjamin.peterson | 2008-12-19 20:57:19 -0600 (Fri, 19 Dec 2008) | 1 line
beef up docstring
........
r67880 | benjamin.peterson | 2008-12-20 16:49:24 -0600 (Sat, 20 Dec 2008) | 1 line
remove redundant sentence
........
r67882 | benjamin.peterson | 2008-12-20 16:59:49 -0600 (Sat, 20 Dec 2008) | 1 line
add some recent releases to the list
........
2008-12-20 20:06:59 -04:00
|
|
|
gil = PyGILState_Ensure();
|
2001-02-22 18:39:18 -04:00
|
|
|
(void)PyObject_Print(op, stderr, 0);
|
Merged revisions 67654,67676-67677,67681,67692,67725,67761,67784-67785,67787-67788,67802,67848-67850,67862-67864,67880,67882 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r67654 | georg.brandl | 2008-12-07 16:42:09 -0600 (Sun, 07 Dec 2008) | 2 lines
#4457: rewrite __import__() documentation.
........
r67676 | benjamin.peterson | 2008-12-08 20:03:03 -0600 (Mon, 08 Dec 2008) | 1 line
specify how things are copied
........
r67677 | benjamin.peterson | 2008-12-08 20:05:11 -0600 (Mon, 08 Dec 2008) | 1 line
revert unrelated change to installer script
........
r67681 | jeremy.hylton | 2008-12-09 15:03:10 -0600 (Tue, 09 Dec 2008) | 2 lines
Add simple unittests for Request
........
r67692 | amaury.forgeotdarc | 2008-12-10 18:03:42 -0600 (Wed, 10 Dec 2008) | 2 lines
#1030250: correctly pass the dry_run option to the mkpath() function.
........
r67725 | benjamin.peterson | 2008-12-12 22:02:20 -0600 (Fri, 12 Dec 2008) | 1 line
fix incorrect example
........
r67761 | benjamin.peterson | 2008-12-14 11:26:04 -0600 (Sun, 14 Dec 2008) | 1 line
fix missing bracket
........
r67784 | georg.brandl | 2008-12-15 02:33:58 -0600 (Mon, 15 Dec 2008) | 2 lines
#4446: document "platforms" argument for setup().
........
r67785 | georg.brandl | 2008-12-15 02:36:11 -0600 (Mon, 15 Dec 2008) | 2 lines
#4611: fix typo.
........
r67787 | georg.brandl | 2008-12-15 02:58:59 -0600 (Mon, 15 Dec 2008) | 2 lines
#4578: fix has_key() usage in compiler package.
........
r67788 | georg.brandl | 2008-12-15 03:07:39 -0600 (Mon, 15 Dec 2008) | 2 lines
#4568: remove limitation in varargs callback example.
........
r67802 | amaury.forgeotdarc | 2008-12-15 16:29:14 -0600 (Mon, 15 Dec 2008) | 4 lines
#3632: the "pyo" macro from gdbinit can now run when the GIL is released.
Patch by haypo.
........
r67848 | benjamin.peterson | 2008-12-18 20:28:56 -0600 (Thu, 18 Dec 2008) | 1 line
fix typo
........
r67849 | benjamin.peterson | 2008-12-18 20:31:35 -0600 (Thu, 18 Dec 2008) | 1 line
_call_method -> _callmethod and _get_value to _getvalue
........
r67850 | raymond.hettinger | 2008-12-19 03:06:07 -0600 (Fri, 19 Dec 2008) | 9 lines
Fix-up and clean-up docs for int.bit_length().
* Replace dramatic footnote with in-line comment about possible round-off errors in logarithms of large numbers.
* Add comments to the pure python code equivalent.
* replace floor() with int() in the mathematical equivalent so the type is correct (should be an int, not a float).
* add abs() to the mathematical equivalent so that it matches the previous line that it is supposed to be equivalent to.
* make one combined example with a negative input.
........
r67862 | benjamin.peterson | 2008-12-19 20:48:02 -0600 (Fri, 19 Dec 2008) | 1 line
copy sentence from docstring
........
r67863 | benjamin.peterson | 2008-12-19 20:51:26 -0600 (Fri, 19 Dec 2008) | 1 line
add headings
........
r67864 | benjamin.peterson | 2008-12-19 20:57:19 -0600 (Fri, 19 Dec 2008) | 1 line
beef up docstring
........
r67880 | benjamin.peterson | 2008-12-20 16:49:24 -0600 (Sat, 20 Dec 2008) | 1 line
remove redundant sentence
........
r67882 | benjamin.peterson | 2008-12-20 16:59:49 -0600 (Sat, 20 Dec 2008) | 1 line
add some recent releases to the list
........
2008-12-20 20:06:59 -04:00
|
|
|
PyGILState_Release(gil);
|
2006-03-01 01:41:20 -04:00
|
|
|
/* XXX(twouters) cast refcount to long until %zd is
|
|
|
|
universally available */
|
2001-09-14 12:50:08 -03:00
|
|
|
fprintf(stderr, "\n"
|
|
|
|
"type : %s\n"
|
2006-03-01 01:41:20 -04:00
|
|
|
"refcount: %ld\n"
|
2001-09-14 12:50:08 -03:00
|
|
|
"address : %p\n",
|
2007-12-18 22:45:37 -04:00
|
|
|
Py_TYPE(op)==NULL ? "NULL" : Py_TYPE(op)->tp_name,
|
2006-03-01 01:41:20 -04:00
|
|
|
(long)op->ob_refcnt,
|
2001-09-14 12:50:08 -03:00
|
|
|
op);
|
2001-02-22 18:39:18 -04:00
|
|
|
}
|
2001-01-23 12:24:35 -04:00
|
|
|
}
|
2001-01-23 12:33:18 -04:00
|
|
|
|
1997-05-02 00:12:38 -03:00
|
|
|
PyObject *
|
2000-07-09 12:48:49 -03:00
|
|
|
PyObject_Repr(PyObject *v)
|
1990-10-14 09:07:46 -03:00
|
|
|
{
|
2007-08-26 01:19:43 -03:00
|
|
|
PyObject *res;
|
1997-05-02 00:12:38 -03:00
|
|
|
if (PyErr_CheckSignals())
|
1991-06-07 13:10:43 -03:00
|
|
|
return NULL;
|
1998-04-28 13:06:54 -03:00
|
|
|
#ifdef USE_STACKCHECK
|
|
|
|
if (PyOS_CheckStack()) {
|
2000-10-24 16:57:45 -03:00
|
|
|
PyErr_SetString(PyExc_MemoryError, "stack overflow");
|
1998-04-28 13:06:54 -03:00
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
#endif
|
1991-06-07 13:10:43 -03:00
|
|
|
if (v == NULL)
|
2007-05-18 14:15:44 -03:00
|
|
|
return PyUnicode_FromString("<NULL>");
|
2007-12-18 22:45:37 -04:00
|
|
|
if (Py_TYPE(v)->tp_repr == NULL)
|
2007-11-06 17:34:58 -04:00
|
|
|
return PyUnicode_FromFormat("<%s object at %p>",
|
|
|
|
v->ob_type->tp_name, v);
|
|
|
|
res = (*v->ob_type->tp_repr)(v);
|
|
|
|
if (res != NULL && !PyUnicode_Check(res)) {
|
|
|
|
PyErr_Format(PyExc_TypeError,
|
|
|
|
"__repr__ returned non-string (type %.200s)",
|
|
|
|
res->ob_type->tp_name);
|
|
|
|
Py_DECREF(res);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
return res;
|
2007-05-18 14:15:44 -03:00
|
|
|
}
|
|
|
|
|
1997-05-02 00:12:38 -03:00
|
|
|
PyObject *
|
2007-11-06 17:34:58 -04:00
|
|
|
PyObject_Str(PyObject *v)
|
1993-11-05 06:22:19 -04:00
|
|
|
{
|
2000-03-10 18:55:18 -04:00
|
|
|
PyObject *res;
|
2007-11-06 17:34:58 -04:00
|
|
|
if (PyErr_CheckSignals())
|
|
|
|
return NULL;
|
|
|
|
#ifdef USE_STACKCHECK
|
|
|
|
if (PyOS_CheckStack()) {
|
|
|
|
PyErr_SetString(PyExc_MemoryError, "stack overflow");
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
#endif
|
1993-11-05 06:22:19 -04:00
|
|
|
if (v == NULL)
|
2007-08-26 01:19:43 -03:00
|
|
|
return PyUnicode_FromString("<NULL>");
|
2005-08-12 14:34:58 -03:00
|
|
|
if (PyUnicode_CheckExact(v)) {
|
|
|
|
Py_INCREF(v);
|
|
|
|
return v;
|
|
|
|
}
|
2007-12-18 22:45:37 -04:00
|
|
|
if (Py_TYPE(v)->tp_str == NULL)
|
2001-05-01 13:53:37 -03:00
|
|
|
return PyObject_Repr(v);
|
|
|
|
|
Merged revisions 58221-58741 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r58221 | georg.brandl | 2007-09-20 10:57:59 -0700 (Thu, 20 Sep 2007) | 2 lines
Patch #1181: add os.environ.clear() method.
........
r58225 | sean.reifschneider | 2007-09-20 23:33:28 -0700 (Thu, 20 Sep 2007) | 3 lines
Issue1704287: "make install" fails unless you do "make" first. Make
oldsharedmods and sharedmods in "libinstall".
........
r58232 | guido.van.rossum | 2007-09-22 13:18:03 -0700 (Sat, 22 Sep 2007) | 4 lines
Patch # 188 by Philip Jenvey.
Make tell() mark CRLF as a newline.
With unit test.
........
r58242 | georg.brandl | 2007-09-24 10:55:47 -0700 (Mon, 24 Sep 2007) | 2 lines
Fix typo and double word.
........
r58245 | georg.brandl | 2007-09-24 10:59:28 -0700 (Mon, 24 Sep 2007) | 2 lines
#1196: document default radix for int().
........
r58247 | georg.brandl | 2007-09-24 11:08:24 -0700 (Mon, 24 Sep 2007) | 2 lines
#1177: accept 2xx responses for https too, not only http.
........
r58249 | andrew.kuchling | 2007-09-24 16:45:51 -0700 (Mon, 24 Sep 2007) | 1 line
Remove stray odd character; grammar fix
........
r58250 | andrew.kuchling | 2007-09-24 16:46:28 -0700 (Mon, 24 Sep 2007) | 1 line
Typo fix
........
r58251 | andrew.kuchling | 2007-09-24 17:09:42 -0700 (Mon, 24 Sep 2007) | 1 line
Add various items
........
r58268 | vinay.sajip | 2007-09-26 22:34:45 -0700 (Wed, 26 Sep 2007) | 1 line
Change to flush and close logic to fix #1760556.
........
r58269 | vinay.sajip | 2007-09-26 22:38:51 -0700 (Wed, 26 Sep 2007) | 1 line
Change to basicConfig() to fix #1021.
........
r58270 | georg.brandl | 2007-09-26 23:26:58 -0700 (Wed, 26 Sep 2007) | 2 lines
#1208: document match object's boolean value.
........
r58271 | vinay.sajip | 2007-09-26 23:56:13 -0700 (Wed, 26 Sep 2007) | 1 line
Minor date change.
........
r58272 | vinay.sajip | 2007-09-27 00:35:10 -0700 (Thu, 27 Sep 2007) | 1 line
Change to LogRecord.__init__() to fix #1206. Note that archaic use of type(x) == types.DictType is because of keeping 1.5.2 compatibility. While this is much less relevant these days, there probably needs to be a separate commit for removing all archaic constructs at the same time.
........
r58288 | brett.cannon | 2007-09-30 12:45:10 -0700 (Sun, 30 Sep 2007) | 9 lines
tuple.__repr__ did not consider a reference loop as it is not possible from
Python code; but it is possible from C. object.__str__ had the issue of not
expecting a type to doing something within it's tp_str implementation that
could trigger an infinite recursion, but it could in C code.. Both found
thanks to BaseException and how it handles its repr.
Closes issue #1686386. Thanks to Thomas Herve for taking an initial stab at
coming up with a solution.
........
r58289 | brett.cannon | 2007-09-30 13:37:19 -0700 (Sun, 30 Sep 2007) | 3 lines
Fix error introduced by r58288; if a tuple is length 0 return its repr and
don't worry about any self-referring tuples.
........
r58294 | facundo.batista | 2007-10-02 10:01:24 -0700 (Tue, 02 Oct 2007) | 11 lines
Made the various is_* operations return booleans. This was discussed
with Cawlishaw by mail, and he basically confirmed that to these is_*
operations, there's no need to return Decimal(0) and Decimal(1) if
the language supports the False and True booleans.
Also added a few tests for the these functions in extra.decTest, since
they are mostly untested (apart from the doctests).
Thanks Mark Dickinson
........
r58295 | facundo.batista | 2007-10-02 11:21:18 -0700 (Tue, 02 Oct 2007) | 4 lines
Added a class to store the digits of log(10), so that they can be made
available when necessary without recomputing. Thanks Mark Dickinson
........
r58299 | mark.summerfield | 2007-10-03 01:53:21 -0700 (Wed, 03 Oct 2007) | 4 lines
Added note in footnote about string comparisons about
unicodedata.normalize().
........
r58304 | raymond.hettinger | 2007-10-03 14:18:11 -0700 (Wed, 03 Oct 2007) | 1 line
enumerate() is no longer bounded to using sequences shorter than LONG_MAX. The possibility of overflow was sending some newsgroup posters into a tizzy.
........
r58305 | raymond.hettinger | 2007-10-03 17:20:27 -0700 (Wed, 03 Oct 2007) | 1 line
itertools.count() no longer limited to sys.maxint.
........
r58306 | kurt.kaiser | 2007-10-03 18:49:54 -0700 (Wed, 03 Oct 2007) | 3 lines
Assume that the user knows when he wants to end the line; don't insert
something he didn't select or complete.
........
r58307 | kurt.kaiser | 2007-10-03 19:07:50 -0700 (Wed, 03 Oct 2007) | 2 lines
Remove unused theme that was causing a fault in p3k.
........
r58308 | kurt.kaiser | 2007-10-03 19:09:17 -0700 (Wed, 03 Oct 2007) | 2 lines
Clean up EditorWindow close.
........
r58309 | kurt.kaiser | 2007-10-03 19:53:07 -0700 (Wed, 03 Oct 2007) | 7 lines
textView cleanup. Patch 1718043 Tal Einat.
M idlelib/EditorWindow.py
M idlelib/aboutDialog.py
M idlelib/textView.py
M idlelib/NEWS.txt
........
r58310 | kurt.kaiser | 2007-10-03 20:11:12 -0700 (Wed, 03 Oct 2007) | 3 lines
configDialog cleanup. Patch 1730217 Tal Einat.
........
r58311 | neal.norwitz | 2007-10-03 23:00:48 -0700 (Wed, 03 Oct 2007) | 4 lines
Coverity #151: Remove deadcode.
All this code already exists above starting at line 653.
........
r58325 | fred.drake | 2007-10-04 19:46:12 -0700 (Thu, 04 Oct 2007) | 1 line
wrap lines to <80 characters before fixing errors
........
r58326 | raymond.hettinger | 2007-10-04 19:47:07 -0700 (Thu, 04 Oct 2007) | 6 lines
Add __asdict__() to NamedTuple and refine the docs.
Add maxlen support to deque() and fixup docs.
Partially fix __reduce__(). The None as a third arg was no longer supported.
Still needs work on __reduce__() to handle recursive inputs.
........
r58327 | fred.drake | 2007-10-04 19:48:32 -0700 (Thu, 04 Oct 2007) | 3 lines
move descriptions of ac_(in|out)_buffer_size to the right place
http://bugs.python.org/issue1053
........
r58329 | neal.norwitz | 2007-10-04 20:39:17 -0700 (Thu, 04 Oct 2007) | 3 lines
dict could be NULL, so we need to XDECREF.
Fix a compiler warning about passing a PyTypeObject* instead of PyObject*.
........
r58330 | neal.norwitz | 2007-10-04 20:41:19 -0700 (Thu, 04 Oct 2007) | 2 lines
Fix Coverity #158: Check the correct variable.
........
r58332 | neal.norwitz | 2007-10-04 22:01:38 -0700 (Thu, 04 Oct 2007) | 7 lines
Fix Coverity #159.
This code was broken if save() returned a negative number since i contained
a boolean value and then we compared i < 0 which should never be true.
Will backport (assuming it's necessary)
........
r58334 | neal.norwitz | 2007-10-04 22:29:17 -0700 (Thu, 04 Oct 2007) | 1 line
Add a note about fixing some more warnings found by Coverity.
........
r58338 | raymond.hettinger | 2007-10-05 12:07:31 -0700 (Fri, 05 Oct 2007) | 1 line
Restore BEGIN/END THREADS macros which were squashed in the previous checkin
........
r58343 | gregory.p.smith | 2007-10-06 00:48:10 -0700 (Sat, 06 Oct 2007) | 3 lines
Stab in the dark attempt to fix the test_bsddb3 failure on sparc and S-390
ubuntu buildbots.
........
r58344 | gregory.p.smith | 2007-10-06 00:51:59 -0700 (Sat, 06 Oct 2007) | 2 lines
Allows BerkeleyDB 4.6.x >= 4.6.21 for the bsddb module.
........
r58348 | gregory.p.smith | 2007-10-06 08:47:37 -0700 (Sat, 06 Oct 2007) | 3 lines
Use the host the author likely meant in the first place. pop.gmail.com is
reliable. gmail.org is someones personal domain.
........
r58351 | neal.norwitz | 2007-10-06 12:16:28 -0700 (Sat, 06 Oct 2007) | 3 lines
Ensure that this test will pass even if another test left an unwritable TESTFN.
Also use the safe unlink in test_support instead of rolling our own here.
........
r58368 | georg.brandl | 2007-10-08 00:50:24 -0700 (Mon, 08 Oct 2007) | 3 lines
#1123: fix the docs for the str.split(None, sep) case.
Also expand a few other methods' docs, which had more info in the deprecated string module docs.
........
r58369 | georg.brandl | 2007-10-08 01:06:05 -0700 (Mon, 08 Oct 2007) | 2 lines
Update docstring of sched, also remove an unused assignment.
........
r58370 | raymond.hettinger | 2007-10-08 02:14:28 -0700 (Mon, 08 Oct 2007) | 5 lines
Add comments to NamedTuple code.
Let the field spec be either a string or a non-string sequence (suggested by Martin Blais with use cases).
Improve the error message in the case of a SyntaxError (caused by a duplicate field name).
........
r58371 | raymond.hettinger | 2007-10-08 02:56:29 -0700 (Mon, 08 Oct 2007) | 1 line
Missed a line in the docs
........
r58372 | raymond.hettinger | 2007-10-08 03:11:51 -0700 (Mon, 08 Oct 2007) | 1 line
Better variable names
........
r58376 | georg.brandl | 2007-10-08 07:12:47 -0700 (Mon, 08 Oct 2007) | 3 lines
#1199: docs for tp_as_{number,sequence,mapping}, by Amaury Forgeot d'Arc.
No need to merge this to py3k!
........
r58380 | raymond.hettinger | 2007-10-08 14:26:58 -0700 (Mon, 08 Oct 2007) | 1 line
Eliminate camelcase function name
........
r58381 | andrew.kuchling | 2007-10-08 16:23:03 -0700 (Mon, 08 Oct 2007) | 1 line
Eliminate camelcase function name
........
r58382 | raymond.hettinger | 2007-10-08 18:36:23 -0700 (Mon, 08 Oct 2007) | 1 line
Make the error messages more specific
........
r58384 | gregory.p.smith | 2007-10-08 23:02:21 -0700 (Mon, 08 Oct 2007) | 10 lines
Splits Modules/_bsddb.c up into bsddb.h and _bsddb.c and adds a C API
object available as bsddb.db.api. This is based on the patch submitted
by Duncan Grisby here:
http://sourceforge.net/tracker/index.php?func=detail&aid=1551895&group_id=13900&atid=313900
See this thread for additional info:
http://sourceforge.net/mailarchive/forum.php?thread_name=E1GAVDK-0002rk-Iw%40apasphere.com&forum_name=pybsddb-users
It also cleans up the code a little by removing some ifdef/endifs for
python prior to 2.1 and for unsupported Berkeley DB <= 3.2.
........
r58385 | gregory.p.smith | 2007-10-08 23:50:43 -0700 (Mon, 08 Oct 2007) | 5 lines
Fix a double free when positioning a database cursor to a non-existant
string key (and probably a few other situations with string keys).
This was reported with a patch as pybsddb sourceforge bug 1708868 by
jjjhhhlll at gmail.
........
r58386 | gregory.p.smith | 2007-10-09 00:19:11 -0700 (Tue, 09 Oct 2007) | 3 lines
Use the highest cPickle protocol in bsddb.dbshelve. This comes from
sourceforge pybsddb patch 1551443 by w_barnes.
........
r58394 | gregory.p.smith | 2007-10-09 11:26:02 -0700 (Tue, 09 Oct 2007) | 2 lines
remove another sleepycat reference
........
r58396 | kurt.kaiser | 2007-10-09 12:31:30 -0700 (Tue, 09 Oct 2007) | 3 lines
Allow interrupt only when executing user code in subprocess
Patch 1225 Tal Einat modified from IDLE-Spoon.
........
r58399 | brett.cannon | 2007-10-09 17:07:50 -0700 (Tue, 09 Oct 2007) | 5 lines
Remove file-level typedefs that were inconsistently used throughout the file.
Just move over to the public API names.
Closes issue1238.
........
r58401 | raymond.hettinger | 2007-10-09 17:26:46 -0700 (Tue, 09 Oct 2007) | 1 line
Accept Jim Jewett's api suggestion to use None instead of -1 to indicate unbounded deques.
........
r58403 | kurt.kaiser | 2007-10-09 17:55:40 -0700 (Tue, 09 Oct 2007) | 2 lines
Allow cursor color change w/o restart. Patch 1725576 Tal Einat.
........
r58404 | kurt.kaiser | 2007-10-09 18:06:47 -0700 (Tue, 09 Oct 2007) | 2 lines
show paste if > 80 columns. Patch 1659326 Tal Einat.
........
r58415 | thomas.heller | 2007-10-11 12:51:32 -0700 (Thu, 11 Oct 2007) | 5 lines
On OS X, use os.uname() instead of gestalt.sysv(...) to get the
operating system version. This allows to use ctypes when Python
was configured with --disable-toolbox-glue.
........
r58419 | neal.norwitz | 2007-10-11 20:01:01 -0700 (Thu, 11 Oct 2007) | 1 line
Get rid of warning about not being able to create an existing directory.
........
r58420 | neal.norwitz | 2007-10-11 20:01:30 -0700 (Thu, 11 Oct 2007) | 1 line
Get rid of warnings on a bunch of platforms by using a proper prototype.
........
r58421 | neal.norwitz | 2007-10-11 20:01:54 -0700 (Thu, 11 Oct 2007) | 4 lines
Get rid of compiler warning about retval being used (returned) without
being initialized. (gcc warning and Coverity 202)
........
r58422 | neal.norwitz | 2007-10-11 20:03:23 -0700 (Thu, 11 Oct 2007) | 1 line
Fix Coverity 168: Close the file before returning (exiting).
........
r58423 | neal.norwitz | 2007-10-11 20:04:18 -0700 (Thu, 11 Oct 2007) | 4 lines
Fix Coverity 180: Don't overallocate. We don't need structs, but pointers.
Also fix a memory leak.
........
r58424 | neal.norwitz | 2007-10-11 20:05:19 -0700 (Thu, 11 Oct 2007) | 5 lines
Fix Coverity 185-186: If the passed in FILE is NULL, uninitialized memory
would be accessed.
Will backport.
........
r58425 | neal.norwitz | 2007-10-11 20:52:34 -0700 (Thu, 11 Oct 2007) | 1 line
Get this module to compile with bsddb versions prior to 4.3
........
r58430 | martin.v.loewis | 2007-10-12 01:56:52 -0700 (Fri, 12 Oct 2007) | 3 lines
Bug #1216: Restore support for Visual Studio 2002.
Will backport to 2.5.
........
r58433 | raymond.hettinger | 2007-10-12 10:53:11 -0700 (Fri, 12 Oct 2007) | 1 line
Fix test of count.__repr__() to ignore the 'L' if the count is a long
........
r58434 | gregory.p.smith | 2007-10-12 11:44:06 -0700 (Fri, 12 Oct 2007) | 4 lines
Fixes http://bugs.python.org/issue1233 - bsddb.dbshelve.DBShelf.append
was useless due to inverted logic. Also adds a test case for RECNO dbs
to test_dbshelve.
........
r58445 | georg.brandl | 2007-10-13 06:20:03 -0700 (Sat, 13 Oct 2007) | 2 lines
Fix email example.
........
r58450 | gregory.p.smith | 2007-10-13 16:02:05 -0700 (Sat, 13 Oct 2007) | 2 lines
Fix an uncollectable reference leak in bsddb.db.DBShelf.append
........
r58453 | neal.norwitz | 2007-10-13 17:18:40 -0700 (Sat, 13 Oct 2007) | 8 lines
Let the O/S supply a port if none of the default ports can be used.
This should make the tests more robust at the expense of allowing
tests to be sloppier by not requiring them to cleanup after themselves.
(It will legitamitely help when running two test suites simultaneously
or if another process is already using one of the predefined ports.)
Also simplifies (slightLy) the exception handling elsewhere.
........
r58459 | neal.norwitz | 2007-10-14 11:30:21 -0700 (Sun, 14 Oct 2007) | 2 lines
Don't raise a string exception, they don't work anymore.
........
r58460 | neal.norwitz | 2007-10-14 11:40:37 -0700 (Sun, 14 Oct 2007) | 1 line
Use unittest for assertions
........
r58468 | armin.rigo | 2007-10-15 00:48:35 -0700 (Mon, 15 Oct 2007) | 2 lines
test_bigbits was not testing what it seemed to.
........
r58471 | guido.van.rossum | 2007-10-15 08:54:11 -0700 (Mon, 15 Oct 2007) | 3 lines
Change a PyErr_Print() into a PyErr_Clear(),
per discussion in issue 1031213.
........
r58500 | raymond.hettinger | 2007-10-16 12:18:30 -0700 (Tue, 16 Oct 2007) | 1 line
Improve error messages
........
r58506 | raymond.hettinger | 2007-10-16 14:28:32 -0700 (Tue, 16 Oct 2007) | 1 line
More docs, error messages, and tests
........
r58507 | andrew.kuchling | 2007-10-16 15:58:03 -0700 (Tue, 16 Oct 2007) | 1 line
Add items
........
r58508 | brett.cannon | 2007-10-16 16:24:06 -0700 (Tue, 16 Oct 2007) | 3 lines
Remove ``:const:`` notation on None in parameter list. Since the markup is not
rendered for parameters it just showed up as ``:const:`None` `` in the output.
........
r58509 | brett.cannon | 2007-10-16 16:26:45 -0700 (Tue, 16 Oct 2007) | 3 lines
Re-order some functions whose parameters differ between PyObject and const char
* so that they are next to each other.
........
r58522 | armin.rigo | 2007-10-17 11:46:37 -0700 (Wed, 17 Oct 2007) | 5 lines
Fix the overflow checking of list_repeat.
Introduce overflow checking into list_inplace_repeat.
Backport candidate, possibly.
........
r58530 | facundo.batista | 2007-10-17 20:16:03 -0700 (Wed, 17 Oct 2007) | 7 lines
Issue #1580738. When HTTPConnection reads the whole stream with read(),
it closes itself. When the stream is read in several calls to read(n),
it should behave in the same way if HTTPConnection knows where the end
of the stream is (through self.length). Added a test case for this
behaviour.
........
r58531 | facundo.batista | 2007-10-17 20:44:48 -0700 (Wed, 17 Oct 2007) | 3 lines
Issue 1289, just a typo.
........
r58532 | gregory.p.smith | 2007-10-18 00:56:54 -0700 (Thu, 18 Oct 2007) | 4 lines
cleanup test_dbtables to use mkdtemp. cleanup dbtables to pass txn as a
keyword argument whenever possible to avoid bugs and confusion. (dbtables.py
line 447 self.db.get using txn as a non-keyword was an actual bug due to this)
........
r58533 | gregory.p.smith | 2007-10-18 01:34:20 -0700 (Thu, 18 Oct 2007) | 4 lines
Fix a weird bug in dbtables: if it chose a random rowid string that contained
NULL bytes it would cause the database all sorts of problems in the future
leading to very strange random failures and corrupt dbtables.bsdTableDb dbs.
........
r58534 | gregory.p.smith | 2007-10-18 09:32:02 -0700 (Thu, 18 Oct 2007) | 3 lines
A cleaner fix than the one committed last night. Generate random rowids that
do not contain null bytes.
........
r58537 | gregory.p.smith | 2007-10-18 10:17:57 -0700 (Thu, 18 Oct 2007) | 2 lines
mention bsddb fixes.
........
r58538 | raymond.hettinger | 2007-10-18 14:13:06 -0700 (Thu, 18 Oct 2007) | 1 line
Remove useless warning
........
r58539 | gregory.p.smith | 2007-10-19 00:31:20 -0700 (Fri, 19 Oct 2007) | 2 lines
squelch the warning that this test is supposed to trigger.
........
r58542 | georg.brandl | 2007-10-19 05:32:39 -0700 (Fri, 19 Oct 2007) | 2 lines
Clarify wording for apply().
........
r58544 | mark.summerfield | 2007-10-19 05:48:17 -0700 (Fri, 19 Oct 2007) | 3 lines
Added a cross-ref to each other.
........
r58545 | georg.brandl | 2007-10-19 10:38:49 -0700 (Fri, 19 Oct 2007) | 2 lines
#1284: "S" means "seen", not unread.
........
r58548 | thomas.heller | 2007-10-19 11:11:41 -0700 (Fri, 19 Oct 2007) | 4 lines
Fix ctypes on 32-bit systems when Python is configured --with-system-ffi.
See also https://bugs.launchpad.net/bugs/72505.
Ported from release25-maint branch.
........
r58550 | facundo.batista | 2007-10-19 12:25:57 -0700 (Fri, 19 Oct 2007) | 8 lines
The constructor from tuple was way too permissive: it allowed bad
coefficient numbers, floats in the sign, and other details that
generated directly the wrong number in the best case, or triggered
misfunctionality in the alorithms.
Test cases added for these issues. Thanks Mark Dickinson.
........
r58559 | georg.brandl | 2007-10-20 06:22:53 -0700 (Sat, 20 Oct 2007) | 2 lines
Fix code being interpreted as a target.
........
r58561 | georg.brandl | 2007-10-20 06:36:24 -0700 (Sat, 20 Oct 2007) | 2 lines
Document new "cmdoption" directive.
........
r58562 | georg.brandl | 2007-10-20 08:21:22 -0700 (Sat, 20 Oct 2007) | 2 lines
Make a path more Unix-standardy.
........
r58564 | georg.brandl | 2007-10-20 10:51:39 -0700 (Sat, 20 Oct 2007) | 2 lines
Document new directive "envvar".
........
r58567 | georg.brandl | 2007-10-20 11:08:14 -0700 (Sat, 20 Oct 2007) | 6 lines
* Add new toplevel chapter, "Using Python." (how to install,
configure and setup python on different platforms -- at least
in theory.)
* Move the Python on Mac docs in that chapter.
* Add a new chapter about the command line invocation, by stargaming.
........
r58568 | georg.brandl | 2007-10-20 11:33:20 -0700 (Sat, 20 Oct 2007) | 2 lines
Change title, for now.
........
r58569 | georg.brandl | 2007-10-20 11:39:25 -0700 (Sat, 20 Oct 2007) | 2 lines
Add entry to ACKS.
........
r58570 | georg.brandl | 2007-10-20 12:05:45 -0700 (Sat, 20 Oct 2007) | 2 lines
Clarify -E docs.
........
r58571 | georg.brandl | 2007-10-20 12:08:36 -0700 (Sat, 20 Oct 2007) | 2 lines
Even more clarification.
........
r58572 | andrew.kuchling | 2007-10-20 12:25:37 -0700 (Sat, 20 Oct 2007) | 1 line
Fix protocol name
........
r58573 | andrew.kuchling | 2007-10-20 12:35:18 -0700 (Sat, 20 Oct 2007) | 1 line
Various items
........
r58574 | andrew.kuchling | 2007-10-20 12:39:35 -0700 (Sat, 20 Oct 2007) | 1 line
Use correct header line
........
r58576 | armin.rigo | 2007-10-21 02:14:15 -0700 (Sun, 21 Oct 2007) | 3 lines
Add a crasher for the long-standing issue with closing a file
while another thread uses it.
........
r58577 | georg.brandl | 2007-10-21 03:01:56 -0700 (Sun, 21 Oct 2007) | 2 lines
Remove duplicate crasher.
........
r58578 | georg.brandl | 2007-10-21 03:24:20 -0700 (Sun, 21 Oct 2007) | 2 lines
Unify "byte code" to "bytecode". Also sprinkle :term: markup for it.
........
r58579 | georg.brandl | 2007-10-21 03:32:54 -0700 (Sun, 21 Oct 2007) | 2 lines
Add markup to new function descriptions.
........
r58580 | georg.brandl | 2007-10-21 03:45:46 -0700 (Sun, 21 Oct 2007) | 2 lines
Add :term:s for descriptors.
........
r58581 | georg.brandl | 2007-10-21 03:46:24 -0700 (Sun, 21 Oct 2007) | 2 lines
Unify "file-descriptor" to "file descriptor".
........
r58582 | georg.brandl | 2007-10-21 03:52:38 -0700 (Sun, 21 Oct 2007) | 2 lines
Add :term: for generators.
........
r58583 | georg.brandl | 2007-10-21 05:10:28 -0700 (Sun, 21 Oct 2007) | 2 lines
Add :term:s for iterator.
........
r58584 | georg.brandl | 2007-10-21 05:15:05 -0700 (Sun, 21 Oct 2007) | 2 lines
Add :term:s for "new-style class".
........
r58588 | neal.norwitz | 2007-10-21 21:47:54 -0700 (Sun, 21 Oct 2007) | 1 line
Add Chris Monson so he can edit PEPs.
........
r58594 | guido.van.rossum | 2007-10-22 09:27:19 -0700 (Mon, 22 Oct 2007) | 4 lines
Issue #1307, patch by Derek Shockey.
When "MAIL" is received without args, an exception happens instead of
sending a 501 syntax error response.
........
r58598 | travis.oliphant | 2007-10-22 19:40:56 -0700 (Mon, 22 Oct 2007) | 1 line
Add phuang patch from Issue 708374 which adds offset parameter to mmap module.
........
r58601 | neal.norwitz | 2007-10-22 22:44:27 -0700 (Mon, 22 Oct 2007) | 2 lines
Bug #1313, fix typo (wrong variable name) in example.
........
r58609 | georg.brandl | 2007-10-23 11:21:35 -0700 (Tue, 23 Oct 2007) | 2 lines
Update Pygments version from externals.
........
r58618 | guido.van.rossum | 2007-10-23 12:25:41 -0700 (Tue, 23 Oct 2007) | 3 lines
Issue 1307 by Derek Shockey, fox the same bug for RCPT.
Neal: please backport!
........
r58620 | raymond.hettinger | 2007-10-23 13:37:41 -0700 (Tue, 23 Oct 2007) | 1 line
Shorter name for namedtuple()
........
r58621 | andrew.kuchling | 2007-10-23 13:55:47 -0700 (Tue, 23 Oct 2007) | 1 line
Update name
........
r58622 | raymond.hettinger | 2007-10-23 14:23:07 -0700 (Tue, 23 Oct 2007) | 1 line
Fixup news entry
........
r58623 | raymond.hettinger | 2007-10-23 18:28:33 -0700 (Tue, 23 Oct 2007) | 1 line
Optimize sum() for integer and float inputs.
........
r58624 | raymond.hettinger | 2007-10-23 19:05:51 -0700 (Tue, 23 Oct 2007) | 1 line
Fixup error return and add support for intermixed ints and floats/
........
r58628 | vinay.sajip | 2007-10-24 03:47:06 -0700 (Wed, 24 Oct 2007) | 1 line
Bug #1321: Fixed logic error in TimedRotatingFileHandler.__init__()
........
r58641 | facundo.batista | 2007-10-24 12:11:08 -0700 (Wed, 24 Oct 2007) | 4 lines
Issue 1290. CharacterData.__repr__ was constructing a string
in response that keeped having a non-ascii character.
........
r58643 | thomas.heller | 2007-10-24 12:50:45 -0700 (Wed, 24 Oct 2007) | 1 line
Added unittest for calling a function with paramflags (backport from py3k branch).
........
r58645 | matthias.klose | 2007-10-24 13:00:44 -0700 (Wed, 24 Oct 2007) | 2 lines
- Build using system ffi library on arm*-linux*.
........
r58651 | georg.brandl | 2007-10-24 14:40:38 -0700 (Wed, 24 Oct 2007) | 2 lines
Bug #1287: make os.environ.pop() work as expected.
........
r58652 | raymond.hettinger | 2007-10-24 19:26:58 -0700 (Wed, 24 Oct 2007) | 1 line
Missing DECREFs
........
r58653 | matthias.klose | 2007-10-24 23:37:24 -0700 (Wed, 24 Oct 2007) | 2 lines
- Build using system ffi library on arm*-linux*, pass --with-system-ffi to CONFIG_ARGS
........
r58655 | thomas.heller | 2007-10-25 12:47:32 -0700 (Thu, 25 Oct 2007) | 2 lines
ffi_type_longdouble may be already #defined.
See issue 1324.
........
r58656 | kurt.kaiser | 2007-10-25 15:43:45 -0700 (Thu, 25 Oct 2007) | 3 lines
Correct an ancient bug in an unused path by removing that path: register() is
now idempotent.
........
r58660 | kurt.kaiser | 2007-10-25 17:10:09 -0700 (Thu, 25 Oct 2007) | 4 lines
1. Add comments to provide top-level documentation.
2. Refactor to use more descriptive names.
3. Enhance tests in main().
........
r58675 | georg.brandl | 2007-10-26 11:30:41 -0700 (Fri, 26 Oct 2007) | 2 lines
Fix new pop() method on os.environ on ignorecase-platforms.
........
r58696 | neal.norwitz | 2007-10-27 15:32:21 -0700 (Sat, 27 Oct 2007) | 1 line
Update URL for Pygments. 0.8.1 is no longer available
........
r58697 | hyeshik.chang | 2007-10-28 04:19:02 -0700 (Sun, 28 Oct 2007) | 3 lines
- Add support for FreeBSD 8 which is recently forked from FreeBSD 7.
- Regenerate IN module for most recent maintenance tree of FreeBSD 6 and 7.
........
r58698 | hyeshik.chang | 2007-10-28 05:38:09 -0700 (Sun, 28 Oct 2007) | 2 lines
Enable platform-specific tweaks for FreeBSD 8 (exactly same to FreeBSD 7's yet)
........
r58700 | kurt.kaiser | 2007-10-28 12:03:59 -0700 (Sun, 28 Oct 2007) | 2 lines
Add confirmation dialog before printing. Patch 1717170 Tal Einat.
........
r58706 | guido.van.rossum | 2007-10-29 13:52:45 -0700 (Mon, 29 Oct 2007) | 3 lines
Patch 1353 by Jacob Winther.
Add mp4 mapping to mimetypes.py.
........
r58709 | guido.van.rossum | 2007-10-29 15:15:05 -0700 (Mon, 29 Oct 2007) | 6 lines
Backport fixes for the code that decodes octal escapes (and for PyString
also hex escapes) -- this was reaching beyond the end of the input string
buffer, even though it is not supposed to be \0-terminated.
This has no visible effect but is clearly the correct thing to do.
(In 3.0 it had a visible effect after removing ob_sstate from PyString.)
........
r58710 | kurt.kaiser | 2007-10-29 19:38:54 -0700 (Mon, 29 Oct 2007) | 7 lines
check in Tal Einat's update to tabpage.py
Patch 1612746
M configDialog.py
M NEWS.txt
AM tabbedpages.py
........
r58715 | georg.brandl | 2007-10-30 10:51:18 -0700 (Tue, 30 Oct 2007) | 2 lines
Use correct markup.
........
r58716 | georg.brandl | 2007-10-30 10:57:12 -0700 (Tue, 30 Oct 2007) | 2 lines
Make example about hiding None return values at the prompt clearer.
........
r58728 | neal.norwitz | 2007-10-30 23:33:20 -0700 (Tue, 30 Oct 2007) | 1 line
Fix some compiler warnings for signed comparisons on Unix and Windows.
........
r58731 | martin.v.loewis | 2007-10-31 10:19:33 -0700 (Wed, 31 Oct 2007) | 2 lines
Adding Christian Heimes.
........
r58737 | raymond.hettinger | 2007-10-31 14:57:58 -0700 (Wed, 31 Oct 2007) | 1 line
Clarify the reasons why pickle is almost always better than marshal
........
r58739 | raymond.hettinger | 2007-10-31 15:15:49 -0700 (Wed, 31 Oct 2007) | 1 line
Sets are marshalable.
........
2007-11-01 16:42:39 -03:00
|
|
|
/* It is possible for a type to have a tp_str representation that loops
|
|
|
|
infinitely. */
|
|
|
|
if (Py_EnterRecursiveCall(" while getting the str of an object"))
|
|
|
|
return NULL;
|
2007-12-18 22:45:37 -04:00
|
|
|
res = (*Py_TYPE(v)->tp_str)(v);
|
Merged revisions 58221-58741 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r58221 | georg.brandl | 2007-09-20 10:57:59 -0700 (Thu, 20 Sep 2007) | 2 lines
Patch #1181: add os.environ.clear() method.
........
r58225 | sean.reifschneider | 2007-09-20 23:33:28 -0700 (Thu, 20 Sep 2007) | 3 lines
Issue1704287: "make install" fails unless you do "make" first. Make
oldsharedmods and sharedmods in "libinstall".
........
r58232 | guido.van.rossum | 2007-09-22 13:18:03 -0700 (Sat, 22 Sep 2007) | 4 lines
Patch # 188 by Philip Jenvey.
Make tell() mark CRLF as a newline.
With unit test.
........
r58242 | georg.brandl | 2007-09-24 10:55:47 -0700 (Mon, 24 Sep 2007) | 2 lines
Fix typo and double word.
........
r58245 | georg.brandl | 2007-09-24 10:59:28 -0700 (Mon, 24 Sep 2007) | 2 lines
#1196: document default radix for int().
........
r58247 | georg.brandl | 2007-09-24 11:08:24 -0700 (Mon, 24 Sep 2007) | 2 lines
#1177: accept 2xx responses for https too, not only http.
........
r58249 | andrew.kuchling | 2007-09-24 16:45:51 -0700 (Mon, 24 Sep 2007) | 1 line
Remove stray odd character; grammar fix
........
r58250 | andrew.kuchling | 2007-09-24 16:46:28 -0700 (Mon, 24 Sep 2007) | 1 line
Typo fix
........
r58251 | andrew.kuchling | 2007-09-24 17:09:42 -0700 (Mon, 24 Sep 2007) | 1 line
Add various items
........
r58268 | vinay.sajip | 2007-09-26 22:34:45 -0700 (Wed, 26 Sep 2007) | 1 line
Change to flush and close logic to fix #1760556.
........
r58269 | vinay.sajip | 2007-09-26 22:38:51 -0700 (Wed, 26 Sep 2007) | 1 line
Change to basicConfig() to fix #1021.
........
r58270 | georg.brandl | 2007-09-26 23:26:58 -0700 (Wed, 26 Sep 2007) | 2 lines
#1208: document match object's boolean value.
........
r58271 | vinay.sajip | 2007-09-26 23:56:13 -0700 (Wed, 26 Sep 2007) | 1 line
Minor date change.
........
r58272 | vinay.sajip | 2007-09-27 00:35:10 -0700 (Thu, 27 Sep 2007) | 1 line
Change to LogRecord.__init__() to fix #1206. Note that archaic use of type(x) == types.DictType is because of keeping 1.5.2 compatibility. While this is much less relevant these days, there probably needs to be a separate commit for removing all archaic constructs at the same time.
........
r58288 | brett.cannon | 2007-09-30 12:45:10 -0700 (Sun, 30 Sep 2007) | 9 lines
tuple.__repr__ did not consider a reference loop as it is not possible from
Python code; but it is possible from C. object.__str__ had the issue of not
expecting a type to doing something within it's tp_str implementation that
could trigger an infinite recursion, but it could in C code.. Both found
thanks to BaseException and how it handles its repr.
Closes issue #1686386. Thanks to Thomas Herve for taking an initial stab at
coming up with a solution.
........
r58289 | brett.cannon | 2007-09-30 13:37:19 -0700 (Sun, 30 Sep 2007) | 3 lines
Fix error introduced by r58288; if a tuple is length 0 return its repr and
don't worry about any self-referring tuples.
........
r58294 | facundo.batista | 2007-10-02 10:01:24 -0700 (Tue, 02 Oct 2007) | 11 lines
Made the various is_* operations return booleans. This was discussed
with Cawlishaw by mail, and he basically confirmed that to these is_*
operations, there's no need to return Decimal(0) and Decimal(1) if
the language supports the False and True booleans.
Also added a few tests for the these functions in extra.decTest, since
they are mostly untested (apart from the doctests).
Thanks Mark Dickinson
........
r58295 | facundo.batista | 2007-10-02 11:21:18 -0700 (Tue, 02 Oct 2007) | 4 lines
Added a class to store the digits of log(10), so that they can be made
available when necessary without recomputing. Thanks Mark Dickinson
........
r58299 | mark.summerfield | 2007-10-03 01:53:21 -0700 (Wed, 03 Oct 2007) | 4 lines
Added note in footnote about string comparisons about
unicodedata.normalize().
........
r58304 | raymond.hettinger | 2007-10-03 14:18:11 -0700 (Wed, 03 Oct 2007) | 1 line
enumerate() is no longer bounded to using sequences shorter than LONG_MAX. The possibility of overflow was sending some newsgroup posters into a tizzy.
........
r58305 | raymond.hettinger | 2007-10-03 17:20:27 -0700 (Wed, 03 Oct 2007) | 1 line
itertools.count() no longer limited to sys.maxint.
........
r58306 | kurt.kaiser | 2007-10-03 18:49:54 -0700 (Wed, 03 Oct 2007) | 3 lines
Assume that the user knows when he wants to end the line; don't insert
something he didn't select or complete.
........
r58307 | kurt.kaiser | 2007-10-03 19:07:50 -0700 (Wed, 03 Oct 2007) | 2 lines
Remove unused theme that was causing a fault in p3k.
........
r58308 | kurt.kaiser | 2007-10-03 19:09:17 -0700 (Wed, 03 Oct 2007) | 2 lines
Clean up EditorWindow close.
........
r58309 | kurt.kaiser | 2007-10-03 19:53:07 -0700 (Wed, 03 Oct 2007) | 7 lines
textView cleanup. Patch 1718043 Tal Einat.
M idlelib/EditorWindow.py
M idlelib/aboutDialog.py
M idlelib/textView.py
M idlelib/NEWS.txt
........
r58310 | kurt.kaiser | 2007-10-03 20:11:12 -0700 (Wed, 03 Oct 2007) | 3 lines
configDialog cleanup. Patch 1730217 Tal Einat.
........
r58311 | neal.norwitz | 2007-10-03 23:00:48 -0700 (Wed, 03 Oct 2007) | 4 lines
Coverity #151: Remove deadcode.
All this code already exists above starting at line 653.
........
r58325 | fred.drake | 2007-10-04 19:46:12 -0700 (Thu, 04 Oct 2007) | 1 line
wrap lines to <80 characters before fixing errors
........
r58326 | raymond.hettinger | 2007-10-04 19:47:07 -0700 (Thu, 04 Oct 2007) | 6 lines
Add __asdict__() to NamedTuple and refine the docs.
Add maxlen support to deque() and fixup docs.
Partially fix __reduce__(). The None as a third arg was no longer supported.
Still needs work on __reduce__() to handle recursive inputs.
........
r58327 | fred.drake | 2007-10-04 19:48:32 -0700 (Thu, 04 Oct 2007) | 3 lines
move descriptions of ac_(in|out)_buffer_size to the right place
http://bugs.python.org/issue1053
........
r58329 | neal.norwitz | 2007-10-04 20:39:17 -0700 (Thu, 04 Oct 2007) | 3 lines
dict could be NULL, so we need to XDECREF.
Fix a compiler warning about passing a PyTypeObject* instead of PyObject*.
........
r58330 | neal.norwitz | 2007-10-04 20:41:19 -0700 (Thu, 04 Oct 2007) | 2 lines
Fix Coverity #158: Check the correct variable.
........
r58332 | neal.norwitz | 2007-10-04 22:01:38 -0700 (Thu, 04 Oct 2007) | 7 lines
Fix Coverity #159.
This code was broken if save() returned a negative number since i contained
a boolean value and then we compared i < 0 which should never be true.
Will backport (assuming it's necessary)
........
r58334 | neal.norwitz | 2007-10-04 22:29:17 -0700 (Thu, 04 Oct 2007) | 1 line
Add a note about fixing some more warnings found by Coverity.
........
r58338 | raymond.hettinger | 2007-10-05 12:07:31 -0700 (Fri, 05 Oct 2007) | 1 line
Restore BEGIN/END THREADS macros which were squashed in the previous checkin
........
r58343 | gregory.p.smith | 2007-10-06 00:48:10 -0700 (Sat, 06 Oct 2007) | 3 lines
Stab in the dark attempt to fix the test_bsddb3 failure on sparc and S-390
ubuntu buildbots.
........
r58344 | gregory.p.smith | 2007-10-06 00:51:59 -0700 (Sat, 06 Oct 2007) | 2 lines
Allows BerkeleyDB 4.6.x >= 4.6.21 for the bsddb module.
........
r58348 | gregory.p.smith | 2007-10-06 08:47:37 -0700 (Sat, 06 Oct 2007) | 3 lines
Use the host the author likely meant in the first place. pop.gmail.com is
reliable. gmail.org is someones personal domain.
........
r58351 | neal.norwitz | 2007-10-06 12:16:28 -0700 (Sat, 06 Oct 2007) | 3 lines
Ensure that this test will pass even if another test left an unwritable TESTFN.
Also use the safe unlink in test_support instead of rolling our own here.
........
r58368 | georg.brandl | 2007-10-08 00:50:24 -0700 (Mon, 08 Oct 2007) | 3 lines
#1123: fix the docs for the str.split(None, sep) case.
Also expand a few other methods' docs, which had more info in the deprecated string module docs.
........
r58369 | georg.brandl | 2007-10-08 01:06:05 -0700 (Mon, 08 Oct 2007) | 2 lines
Update docstring of sched, also remove an unused assignment.
........
r58370 | raymond.hettinger | 2007-10-08 02:14:28 -0700 (Mon, 08 Oct 2007) | 5 lines
Add comments to NamedTuple code.
Let the field spec be either a string or a non-string sequence (suggested by Martin Blais with use cases).
Improve the error message in the case of a SyntaxError (caused by a duplicate field name).
........
r58371 | raymond.hettinger | 2007-10-08 02:56:29 -0700 (Mon, 08 Oct 2007) | 1 line
Missed a line in the docs
........
r58372 | raymond.hettinger | 2007-10-08 03:11:51 -0700 (Mon, 08 Oct 2007) | 1 line
Better variable names
........
r58376 | georg.brandl | 2007-10-08 07:12:47 -0700 (Mon, 08 Oct 2007) | 3 lines
#1199: docs for tp_as_{number,sequence,mapping}, by Amaury Forgeot d'Arc.
No need to merge this to py3k!
........
r58380 | raymond.hettinger | 2007-10-08 14:26:58 -0700 (Mon, 08 Oct 2007) | 1 line
Eliminate camelcase function name
........
r58381 | andrew.kuchling | 2007-10-08 16:23:03 -0700 (Mon, 08 Oct 2007) | 1 line
Eliminate camelcase function name
........
r58382 | raymond.hettinger | 2007-10-08 18:36:23 -0700 (Mon, 08 Oct 2007) | 1 line
Make the error messages more specific
........
r58384 | gregory.p.smith | 2007-10-08 23:02:21 -0700 (Mon, 08 Oct 2007) | 10 lines
Splits Modules/_bsddb.c up into bsddb.h and _bsddb.c and adds a C API
object available as bsddb.db.api. This is based on the patch submitted
by Duncan Grisby here:
http://sourceforge.net/tracker/index.php?func=detail&aid=1551895&group_id=13900&atid=313900
See this thread for additional info:
http://sourceforge.net/mailarchive/forum.php?thread_name=E1GAVDK-0002rk-Iw%40apasphere.com&forum_name=pybsddb-users
It also cleans up the code a little by removing some ifdef/endifs for
python prior to 2.1 and for unsupported Berkeley DB <= 3.2.
........
r58385 | gregory.p.smith | 2007-10-08 23:50:43 -0700 (Mon, 08 Oct 2007) | 5 lines
Fix a double free when positioning a database cursor to a non-existant
string key (and probably a few other situations with string keys).
This was reported with a patch as pybsddb sourceforge bug 1708868 by
jjjhhhlll at gmail.
........
r58386 | gregory.p.smith | 2007-10-09 00:19:11 -0700 (Tue, 09 Oct 2007) | 3 lines
Use the highest cPickle protocol in bsddb.dbshelve. This comes from
sourceforge pybsddb patch 1551443 by w_barnes.
........
r58394 | gregory.p.smith | 2007-10-09 11:26:02 -0700 (Tue, 09 Oct 2007) | 2 lines
remove another sleepycat reference
........
r58396 | kurt.kaiser | 2007-10-09 12:31:30 -0700 (Tue, 09 Oct 2007) | 3 lines
Allow interrupt only when executing user code in subprocess
Patch 1225 Tal Einat modified from IDLE-Spoon.
........
r58399 | brett.cannon | 2007-10-09 17:07:50 -0700 (Tue, 09 Oct 2007) | 5 lines
Remove file-level typedefs that were inconsistently used throughout the file.
Just move over to the public API names.
Closes issue1238.
........
r58401 | raymond.hettinger | 2007-10-09 17:26:46 -0700 (Tue, 09 Oct 2007) | 1 line
Accept Jim Jewett's api suggestion to use None instead of -1 to indicate unbounded deques.
........
r58403 | kurt.kaiser | 2007-10-09 17:55:40 -0700 (Tue, 09 Oct 2007) | 2 lines
Allow cursor color change w/o restart. Patch 1725576 Tal Einat.
........
r58404 | kurt.kaiser | 2007-10-09 18:06:47 -0700 (Tue, 09 Oct 2007) | 2 lines
show paste if > 80 columns. Patch 1659326 Tal Einat.
........
r58415 | thomas.heller | 2007-10-11 12:51:32 -0700 (Thu, 11 Oct 2007) | 5 lines
On OS X, use os.uname() instead of gestalt.sysv(...) to get the
operating system version. This allows to use ctypes when Python
was configured with --disable-toolbox-glue.
........
r58419 | neal.norwitz | 2007-10-11 20:01:01 -0700 (Thu, 11 Oct 2007) | 1 line
Get rid of warning about not being able to create an existing directory.
........
r58420 | neal.norwitz | 2007-10-11 20:01:30 -0700 (Thu, 11 Oct 2007) | 1 line
Get rid of warnings on a bunch of platforms by using a proper prototype.
........
r58421 | neal.norwitz | 2007-10-11 20:01:54 -0700 (Thu, 11 Oct 2007) | 4 lines
Get rid of compiler warning about retval being used (returned) without
being initialized. (gcc warning and Coverity 202)
........
r58422 | neal.norwitz | 2007-10-11 20:03:23 -0700 (Thu, 11 Oct 2007) | 1 line
Fix Coverity 168: Close the file before returning (exiting).
........
r58423 | neal.norwitz | 2007-10-11 20:04:18 -0700 (Thu, 11 Oct 2007) | 4 lines
Fix Coverity 180: Don't overallocate. We don't need structs, but pointers.
Also fix a memory leak.
........
r58424 | neal.norwitz | 2007-10-11 20:05:19 -0700 (Thu, 11 Oct 2007) | 5 lines
Fix Coverity 185-186: If the passed in FILE is NULL, uninitialized memory
would be accessed.
Will backport.
........
r58425 | neal.norwitz | 2007-10-11 20:52:34 -0700 (Thu, 11 Oct 2007) | 1 line
Get this module to compile with bsddb versions prior to 4.3
........
r58430 | martin.v.loewis | 2007-10-12 01:56:52 -0700 (Fri, 12 Oct 2007) | 3 lines
Bug #1216: Restore support for Visual Studio 2002.
Will backport to 2.5.
........
r58433 | raymond.hettinger | 2007-10-12 10:53:11 -0700 (Fri, 12 Oct 2007) | 1 line
Fix test of count.__repr__() to ignore the 'L' if the count is a long
........
r58434 | gregory.p.smith | 2007-10-12 11:44:06 -0700 (Fri, 12 Oct 2007) | 4 lines
Fixes http://bugs.python.org/issue1233 - bsddb.dbshelve.DBShelf.append
was useless due to inverted logic. Also adds a test case for RECNO dbs
to test_dbshelve.
........
r58445 | georg.brandl | 2007-10-13 06:20:03 -0700 (Sat, 13 Oct 2007) | 2 lines
Fix email example.
........
r58450 | gregory.p.smith | 2007-10-13 16:02:05 -0700 (Sat, 13 Oct 2007) | 2 lines
Fix an uncollectable reference leak in bsddb.db.DBShelf.append
........
r58453 | neal.norwitz | 2007-10-13 17:18:40 -0700 (Sat, 13 Oct 2007) | 8 lines
Let the O/S supply a port if none of the default ports can be used.
This should make the tests more robust at the expense of allowing
tests to be sloppier by not requiring them to cleanup after themselves.
(It will legitamitely help when running two test suites simultaneously
or if another process is already using one of the predefined ports.)
Also simplifies (slightLy) the exception handling elsewhere.
........
r58459 | neal.norwitz | 2007-10-14 11:30:21 -0700 (Sun, 14 Oct 2007) | 2 lines
Don't raise a string exception, they don't work anymore.
........
r58460 | neal.norwitz | 2007-10-14 11:40:37 -0700 (Sun, 14 Oct 2007) | 1 line
Use unittest for assertions
........
r58468 | armin.rigo | 2007-10-15 00:48:35 -0700 (Mon, 15 Oct 2007) | 2 lines
test_bigbits was not testing what it seemed to.
........
r58471 | guido.van.rossum | 2007-10-15 08:54:11 -0700 (Mon, 15 Oct 2007) | 3 lines
Change a PyErr_Print() into a PyErr_Clear(),
per discussion in issue 1031213.
........
r58500 | raymond.hettinger | 2007-10-16 12:18:30 -0700 (Tue, 16 Oct 2007) | 1 line
Improve error messages
........
r58506 | raymond.hettinger | 2007-10-16 14:28:32 -0700 (Tue, 16 Oct 2007) | 1 line
More docs, error messages, and tests
........
r58507 | andrew.kuchling | 2007-10-16 15:58:03 -0700 (Tue, 16 Oct 2007) | 1 line
Add items
........
r58508 | brett.cannon | 2007-10-16 16:24:06 -0700 (Tue, 16 Oct 2007) | 3 lines
Remove ``:const:`` notation on None in parameter list. Since the markup is not
rendered for parameters it just showed up as ``:const:`None` `` in the output.
........
r58509 | brett.cannon | 2007-10-16 16:26:45 -0700 (Tue, 16 Oct 2007) | 3 lines
Re-order some functions whose parameters differ between PyObject and const char
* so that they are next to each other.
........
r58522 | armin.rigo | 2007-10-17 11:46:37 -0700 (Wed, 17 Oct 2007) | 5 lines
Fix the overflow checking of list_repeat.
Introduce overflow checking into list_inplace_repeat.
Backport candidate, possibly.
........
r58530 | facundo.batista | 2007-10-17 20:16:03 -0700 (Wed, 17 Oct 2007) | 7 lines
Issue #1580738. When HTTPConnection reads the whole stream with read(),
it closes itself. When the stream is read in several calls to read(n),
it should behave in the same way if HTTPConnection knows where the end
of the stream is (through self.length). Added a test case for this
behaviour.
........
r58531 | facundo.batista | 2007-10-17 20:44:48 -0700 (Wed, 17 Oct 2007) | 3 lines
Issue 1289, just a typo.
........
r58532 | gregory.p.smith | 2007-10-18 00:56:54 -0700 (Thu, 18 Oct 2007) | 4 lines
cleanup test_dbtables to use mkdtemp. cleanup dbtables to pass txn as a
keyword argument whenever possible to avoid bugs and confusion. (dbtables.py
line 447 self.db.get using txn as a non-keyword was an actual bug due to this)
........
r58533 | gregory.p.smith | 2007-10-18 01:34:20 -0700 (Thu, 18 Oct 2007) | 4 lines
Fix a weird bug in dbtables: if it chose a random rowid string that contained
NULL bytes it would cause the database all sorts of problems in the future
leading to very strange random failures and corrupt dbtables.bsdTableDb dbs.
........
r58534 | gregory.p.smith | 2007-10-18 09:32:02 -0700 (Thu, 18 Oct 2007) | 3 lines
A cleaner fix than the one committed last night. Generate random rowids that
do not contain null bytes.
........
r58537 | gregory.p.smith | 2007-10-18 10:17:57 -0700 (Thu, 18 Oct 2007) | 2 lines
mention bsddb fixes.
........
r58538 | raymond.hettinger | 2007-10-18 14:13:06 -0700 (Thu, 18 Oct 2007) | 1 line
Remove useless warning
........
r58539 | gregory.p.smith | 2007-10-19 00:31:20 -0700 (Fri, 19 Oct 2007) | 2 lines
squelch the warning that this test is supposed to trigger.
........
r58542 | georg.brandl | 2007-10-19 05:32:39 -0700 (Fri, 19 Oct 2007) | 2 lines
Clarify wording for apply().
........
r58544 | mark.summerfield | 2007-10-19 05:48:17 -0700 (Fri, 19 Oct 2007) | 3 lines
Added a cross-ref to each other.
........
r58545 | georg.brandl | 2007-10-19 10:38:49 -0700 (Fri, 19 Oct 2007) | 2 lines
#1284: "S" means "seen", not unread.
........
r58548 | thomas.heller | 2007-10-19 11:11:41 -0700 (Fri, 19 Oct 2007) | 4 lines
Fix ctypes on 32-bit systems when Python is configured --with-system-ffi.
See also https://bugs.launchpad.net/bugs/72505.
Ported from release25-maint branch.
........
r58550 | facundo.batista | 2007-10-19 12:25:57 -0700 (Fri, 19 Oct 2007) | 8 lines
The constructor from tuple was way too permissive: it allowed bad
coefficient numbers, floats in the sign, and other details that
generated directly the wrong number in the best case, or triggered
misfunctionality in the alorithms.
Test cases added for these issues. Thanks Mark Dickinson.
........
r58559 | georg.brandl | 2007-10-20 06:22:53 -0700 (Sat, 20 Oct 2007) | 2 lines
Fix code being interpreted as a target.
........
r58561 | georg.brandl | 2007-10-20 06:36:24 -0700 (Sat, 20 Oct 2007) | 2 lines
Document new "cmdoption" directive.
........
r58562 | georg.brandl | 2007-10-20 08:21:22 -0700 (Sat, 20 Oct 2007) | 2 lines
Make a path more Unix-standardy.
........
r58564 | georg.brandl | 2007-10-20 10:51:39 -0700 (Sat, 20 Oct 2007) | 2 lines
Document new directive "envvar".
........
r58567 | georg.brandl | 2007-10-20 11:08:14 -0700 (Sat, 20 Oct 2007) | 6 lines
* Add new toplevel chapter, "Using Python." (how to install,
configure and setup python on different platforms -- at least
in theory.)
* Move the Python on Mac docs in that chapter.
* Add a new chapter about the command line invocation, by stargaming.
........
r58568 | georg.brandl | 2007-10-20 11:33:20 -0700 (Sat, 20 Oct 2007) | 2 lines
Change title, for now.
........
r58569 | georg.brandl | 2007-10-20 11:39:25 -0700 (Sat, 20 Oct 2007) | 2 lines
Add entry to ACKS.
........
r58570 | georg.brandl | 2007-10-20 12:05:45 -0700 (Sat, 20 Oct 2007) | 2 lines
Clarify -E docs.
........
r58571 | georg.brandl | 2007-10-20 12:08:36 -0700 (Sat, 20 Oct 2007) | 2 lines
Even more clarification.
........
r58572 | andrew.kuchling | 2007-10-20 12:25:37 -0700 (Sat, 20 Oct 2007) | 1 line
Fix protocol name
........
r58573 | andrew.kuchling | 2007-10-20 12:35:18 -0700 (Sat, 20 Oct 2007) | 1 line
Various items
........
r58574 | andrew.kuchling | 2007-10-20 12:39:35 -0700 (Sat, 20 Oct 2007) | 1 line
Use correct header line
........
r58576 | armin.rigo | 2007-10-21 02:14:15 -0700 (Sun, 21 Oct 2007) | 3 lines
Add a crasher for the long-standing issue with closing a file
while another thread uses it.
........
r58577 | georg.brandl | 2007-10-21 03:01:56 -0700 (Sun, 21 Oct 2007) | 2 lines
Remove duplicate crasher.
........
r58578 | georg.brandl | 2007-10-21 03:24:20 -0700 (Sun, 21 Oct 2007) | 2 lines
Unify "byte code" to "bytecode". Also sprinkle :term: markup for it.
........
r58579 | georg.brandl | 2007-10-21 03:32:54 -0700 (Sun, 21 Oct 2007) | 2 lines
Add markup to new function descriptions.
........
r58580 | georg.brandl | 2007-10-21 03:45:46 -0700 (Sun, 21 Oct 2007) | 2 lines
Add :term:s for descriptors.
........
r58581 | georg.brandl | 2007-10-21 03:46:24 -0700 (Sun, 21 Oct 2007) | 2 lines
Unify "file-descriptor" to "file descriptor".
........
r58582 | georg.brandl | 2007-10-21 03:52:38 -0700 (Sun, 21 Oct 2007) | 2 lines
Add :term: for generators.
........
r58583 | georg.brandl | 2007-10-21 05:10:28 -0700 (Sun, 21 Oct 2007) | 2 lines
Add :term:s for iterator.
........
r58584 | georg.brandl | 2007-10-21 05:15:05 -0700 (Sun, 21 Oct 2007) | 2 lines
Add :term:s for "new-style class".
........
r58588 | neal.norwitz | 2007-10-21 21:47:54 -0700 (Sun, 21 Oct 2007) | 1 line
Add Chris Monson so he can edit PEPs.
........
r58594 | guido.van.rossum | 2007-10-22 09:27:19 -0700 (Mon, 22 Oct 2007) | 4 lines
Issue #1307, patch by Derek Shockey.
When "MAIL" is received without args, an exception happens instead of
sending a 501 syntax error response.
........
r58598 | travis.oliphant | 2007-10-22 19:40:56 -0700 (Mon, 22 Oct 2007) | 1 line
Add phuang patch from Issue 708374 which adds offset parameter to mmap module.
........
r58601 | neal.norwitz | 2007-10-22 22:44:27 -0700 (Mon, 22 Oct 2007) | 2 lines
Bug #1313, fix typo (wrong variable name) in example.
........
r58609 | georg.brandl | 2007-10-23 11:21:35 -0700 (Tue, 23 Oct 2007) | 2 lines
Update Pygments version from externals.
........
r58618 | guido.van.rossum | 2007-10-23 12:25:41 -0700 (Tue, 23 Oct 2007) | 3 lines
Issue 1307 by Derek Shockey, fox the same bug for RCPT.
Neal: please backport!
........
r58620 | raymond.hettinger | 2007-10-23 13:37:41 -0700 (Tue, 23 Oct 2007) | 1 line
Shorter name for namedtuple()
........
r58621 | andrew.kuchling | 2007-10-23 13:55:47 -0700 (Tue, 23 Oct 2007) | 1 line
Update name
........
r58622 | raymond.hettinger | 2007-10-23 14:23:07 -0700 (Tue, 23 Oct 2007) | 1 line
Fixup news entry
........
r58623 | raymond.hettinger | 2007-10-23 18:28:33 -0700 (Tue, 23 Oct 2007) | 1 line
Optimize sum() for integer and float inputs.
........
r58624 | raymond.hettinger | 2007-10-23 19:05:51 -0700 (Tue, 23 Oct 2007) | 1 line
Fixup error return and add support for intermixed ints and floats/
........
r58628 | vinay.sajip | 2007-10-24 03:47:06 -0700 (Wed, 24 Oct 2007) | 1 line
Bug #1321: Fixed logic error in TimedRotatingFileHandler.__init__()
........
r58641 | facundo.batista | 2007-10-24 12:11:08 -0700 (Wed, 24 Oct 2007) | 4 lines
Issue 1290. CharacterData.__repr__ was constructing a string
in response that keeped having a non-ascii character.
........
r58643 | thomas.heller | 2007-10-24 12:50:45 -0700 (Wed, 24 Oct 2007) | 1 line
Added unittest for calling a function with paramflags (backport from py3k branch).
........
r58645 | matthias.klose | 2007-10-24 13:00:44 -0700 (Wed, 24 Oct 2007) | 2 lines
- Build using system ffi library on arm*-linux*.
........
r58651 | georg.brandl | 2007-10-24 14:40:38 -0700 (Wed, 24 Oct 2007) | 2 lines
Bug #1287: make os.environ.pop() work as expected.
........
r58652 | raymond.hettinger | 2007-10-24 19:26:58 -0700 (Wed, 24 Oct 2007) | 1 line
Missing DECREFs
........
r58653 | matthias.klose | 2007-10-24 23:37:24 -0700 (Wed, 24 Oct 2007) | 2 lines
- Build using system ffi library on arm*-linux*, pass --with-system-ffi to CONFIG_ARGS
........
r58655 | thomas.heller | 2007-10-25 12:47:32 -0700 (Thu, 25 Oct 2007) | 2 lines
ffi_type_longdouble may be already #defined.
See issue 1324.
........
r58656 | kurt.kaiser | 2007-10-25 15:43:45 -0700 (Thu, 25 Oct 2007) | 3 lines
Correct an ancient bug in an unused path by removing that path: register() is
now idempotent.
........
r58660 | kurt.kaiser | 2007-10-25 17:10:09 -0700 (Thu, 25 Oct 2007) | 4 lines
1. Add comments to provide top-level documentation.
2. Refactor to use more descriptive names.
3. Enhance tests in main().
........
r58675 | georg.brandl | 2007-10-26 11:30:41 -0700 (Fri, 26 Oct 2007) | 2 lines
Fix new pop() method on os.environ on ignorecase-platforms.
........
r58696 | neal.norwitz | 2007-10-27 15:32:21 -0700 (Sat, 27 Oct 2007) | 1 line
Update URL for Pygments. 0.8.1 is no longer available
........
r58697 | hyeshik.chang | 2007-10-28 04:19:02 -0700 (Sun, 28 Oct 2007) | 3 lines
- Add support for FreeBSD 8 which is recently forked from FreeBSD 7.
- Regenerate IN module for most recent maintenance tree of FreeBSD 6 and 7.
........
r58698 | hyeshik.chang | 2007-10-28 05:38:09 -0700 (Sun, 28 Oct 2007) | 2 lines
Enable platform-specific tweaks for FreeBSD 8 (exactly same to FreeBSD 7's yet)
........
r58700 | kurt.kaiser | 2007-10-28 12:03:59 -0700 (Sun, 28 Oct 2007) | 2 lines
Add confirmation dialog before printing. Patch 1717170 Tal Einat.
........
r58706 | guido.van.rossum | 2007-10-29 13:52:45 -0700 (Mon, 29 Oct 2007) | 3 lines
Patch 1353 by Jacob Winther.
Add mp4 mapping to mimetypes.py.
........
r58709 | guido.van.rossum | 2007-10-29 15:15:05 -0700 (Mon, 29 Oct 2007) | 6 lines
Backport fixes for the code that decodes octal escapes (and for PyString
also hex escapes) -- this was reaching beyond the end of the input string
buffer, even though it is not supposed to be \0-terminated.
This has no visible effect but is clearly the correct thing to do.
(In 3.0 it had a visible effect after removing ob_sstate from PyString.)
........
r58710 | kurt.kaiser | 2007-10-29 19:38:54 -0700 (Mon, 29 Oct 2007) | 7 lines
check in Tal Einat's update to tabpage.py
Patch 1612746
M configDialog.py
M NEWS.txt
AM tabbedpages.py
........
r58715 | georg.brandl | 2007-10-30 10:51:18 -0700 (Tue, 30 Oct 2007) | 2 lines
Use correct markup.
........
r58716 | georg.brandl | 2007-10-30 10:57:12 -0700 (Tue, 30 Oct 2007) | 2 lines
Make example about hiding None return values at the prompt clearer.
........
r58728 | neal.norwitz | 2007-10-30 23:33:20 -0700 (Tue, 30 Oct 2007) | 1 line
Fix some compiler warnings for signed comparisons on Unix and Windows.
........
r58731 | martin.v.loewis | 2007-10-31 10:19:33 -0700 (Wed, 31 Oct 2007) | 2 lines
Adding Christian Heimes.
........
r58737 | raymond.hettinger | 2007-10-31 14:57:58 -0700 (Wed, 31 Oct 2007) | 1 line
Clarify the reasons why pickle is almost always better than marshal
........
r58739 | raymond.hettinger | 2007-10-31 15:15:49 -0700 (Wed, 31 Oct 2007) | 1 line
Sets are marshalable.
........
2007-11-01 16:42:39 -03:00
|
|
|
Py_LeaveRecursiveCall();
|
2000-03-10 18:55:18 -04:00
|
|
|
if (res == NULL)
|
|
|
|
return NULL;
|
2007-11-06 17:34:58 -04:00
|
|
|
if (!PyUnicode_Check(res)) {
|
2005-08-12 14:34:58 -03:00
|
|
|
PyErr_Format(PyExc_TypeError,
|
|
|
|
"__str__ returned non-string (type %.200s)",
|
2007-12-18 22:45:37 -04:00
|
|
|
Py_TYPE(res)->tp_name);
|
2005-08-12 14:34:58 -03:00
|
|
|
Py_DECREF(res);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
2008-06-11 15:37:52 -03:00
|
|
|
PyObject *
|
|
|
|
PyObject_ASCII(PyObject *v)
|
|
|
|
{
|
|
|
|
PyObject *repr, *ascii, *res;
|
|
|
|
|
|
|
|
repr = PyObject_Repr(v);
|
|
|
|
if (repr == NULL)
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
/* repr is guaranteed to be a PyUnicode object by PyObject_Repr */
|
|
|
|
ascii = PyUnicode_EncodeASCII(
|
|
|
|
PyUnicode_AS_UNICODE(repr),
|
|
|
|
PyUnicode_GET_SIZE(repr),
|
|
|
|
"backslashreplace");
|
|
|
|
|
|
|
|
Py_DECREF(repr);
|
|
|
|
if (ascii == NULL)
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
res = PyUnicode_DecodeASCII(
|
|
|
|
PyBytes_AS_STRING(ascii),
|
|
|
|
PyBytes_GET_SIZE(ascii),
|
|
|
|
NULL);
|
|
|
|
|
|
|
|
Py_DECREF(ascii);
|
|
|
|
return res;
|
|
|
|
}
|
Changes to recursive-object comparisons, having to do with a test case
I found where rich comparison of unequal recursive objects gave
unintuituve results. In a discussion with Tim, where we discovered
that our intuition on when a<=b should be true was failing, we decided
to outlaw ordering comparisons on recursive objects. (Once we have
fixed our intuition and designed a matching algorithm that's practical
and reasonable to implement, we can allow such orderings again.)
- Refactored the recursive-object comparison framework; more is now
done in the support routines so less needs to be done in the calling
routines (even at the expense of slowing it down a bit -- this
should normally never be invoked, it's mostly just there to avoid
blowing up the interpreter).
- Changed the framework so that the comparison operator used is also
stored. (The dictionary now stores triples (v, w, op) instead of
pairs (v, w).)
- Changed the nesting limit to a more reasonable small 20; this only
slows down comparisons of very deeply nested objects (unlikely to
occur in practice), while speeding up comparisons of recursive
objects (previously, this would first waste time and space on 500
nested comparisons before it would start detecting recursion).
- Changed rich comparisons for recursive objects to raise a ValueError
exception when recursion is detected for ordering oprators (<, <=,
>, >=).
Unrelated change:
- Moved PyObject_Unicode() to just under PyObject_Str(), where it
belongs. MAL's patch must've inserted in a random spot between two
functions in the file -- between two helpers for rich comparison...
2001-01-18 18:07:06 -04:00
|
|
|
|
2008-08-26 13:46:47 -03:00
|
|
|
PyObject *
|
|
|
|
PyObject_Bytes(PyObject *v)
|
|
|
|
{
|
2008-08-28 08:28:26 -03:00
|
|
|
PyObject *result, *func;
|
2008-08-26 13:46:47 -03:00
|
|
|
static PyObject *bytesstring = NULL;
|
|
|
|
|
|
|
|
if (bytesstring == NULL) {
|
|
|
|
bytesstring = PyUnicode_InternFromString("__bytes__");
|
|
|
|
if (bytesstring == NULL)
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (v == NULL)
|
|
|
|
return PyBytes_FromString("<NULL>");
|
|
|
|
|
|
|
|
if (PyBytes_CheckExact(v)) {
|
|
|
|
Py_INCREF(v);
|
|
|
|
return v;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Doesn't create a reference */
|
|
|
|
func = _PyType_Lookup(Py_TYPE(v), bytesstring);
|
|
|
|
if (func != NULL) {
|
|
|
|
result = PyObject_CallFunctionObjArgs(func, v, NULL);
|
|
|
|
if (result == NULL)
|
|
|
|
return NULL;
|
|
|
|
if (!PyBytes_Check(result)) {
|
|
|
|
PyErr_Format(PyExc_TypeError,
|
|
|
|
"__bytes__ returned non-bytes (type %.200s)",
|
|
|
|
Py_TYPE(result)->tp_name);
|
|
|
|
Py_DECREF(result);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
PyErr_Clear();
|
|
|
|
return PyBytes_FromObject(v);
|
|
|
|
}
|
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
/* The new comparison philosophy is: we completely separate three-way
|
|
|
|
comparison from rich comparison. That is, PyObject_Compare() and
|
|
|
|
PyObject_Cmp() *just* use the tp_compare slot. And PyObject_RichCompare()
|
|
|
|
and PyObject_RichCompareBool() *just* use the tp_richcompare slot.
|
2007-11-06 17:34:58 -04:00
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
See (*) below for practical amendments.
|
2002-05-31 17:03:54 -03:00
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
IOW, only cmp() uses tp_compare; the comparison operators (==, !=, <=, <,
|
|
|
|
>=, >) only use tp_richcompare. Note that list.sort() only uses <.
|
2002-05-31 17:03:54 -03:00
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
(And yes, eventually we'll rip out cmp() and tp_compare.)
|
2001-01-24 18:14:43 -04:00
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
The calling conventions are different: tp_compare only gets called with two
|
|
|
|
objects of the appropriate type; tp_richcompare gets called with a first
|
|
|
|
argument of the appropriate type and a second object of an arbitrary type.
|
|
|
|
We never do any kind of coercion.
|
2001-01-03 21:48:10 -04:00
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
The return conventions are also different.
|
2001-01-17 11:24:28 -04:00
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
The tp_compare slot should return a C int, as follows:
|
2001-01-17 11:24:28 -04:00
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
-1 if a < b or if an exception occurred
|
|
|
|
0 if a == b
|
|
|
|
+1 if a > b
|
2001-01-17 11:24:28 -04:00
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
No other return values are allowed. PyObject_Compare() has the same
|
|
|
|
calling convention.
|
2001-01-03 21:48:10 -04:00
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
The tp_richcompare slot should return an object, as follows:
|
2001-01-17 17:27:02 -04:00
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
NULL if an exception occurred
|
|
|
|
NotImplemented if the requested comparison is not implemented
|
|
|
|
any other false value if the requested comparison is false
|
|
|
|
any other true value if the requested comparison is true
|
2001-01-17 11:24:28 -04:00
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
The PyObject_RichCompare[Bool]() wrappers raise TypeError when they get
|
|
|
|
NotImplemented.
|
2001-01-03 21:48:10 -04:00
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
(*) Practical amendments:
|
2001-01-17 11:24:28 -04:00
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
- If rich comparison returns NotImplemented, == and != are decided by
|
|
|
|
comparing the object pointer (i.e. falling back to the base object
|
|
|
|
implementation).
|
2001-01-17 11:24:28 -04:00
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
- If three-way comparison is not implemented, it falls back on rich
|
|
|
|
comparison (but not the other way around!).
|
2001-01-17 11:24:28 -04:00
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
*/
|
2001-01-22 15:28:09 -04:00
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
/* Forward */
|
|
|
|
static PyObject *do_richcompare(PyObject *v, PyObject *w, int op);
|
2001-01-17 11:24:28 -04:00
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
/* Perform a three-way comparison, raising TypeError if three-way comparison
|
|
|
|
is not supported. */
|
2001-01-17 11:24:28 -04:00
|
|
|
static int
|
2006-08-23 21:41:19 -03:00
|
|
|
do_compare(PyObject *v, PyObject *w)
|
2001-01-17 11:24:28 -04:00
|
|
|
{
|
2001-06-09 04:34:05 -03:00
|
|
|
cmpfunc f;
|
2006-08-23 21:41:19 -03:00
|
|
|
int ok;
|
2001-01-17 11:24:28 -04:00
|
|
|
|
2007-11-06 17:34:58 -04:00
|
|
|
if (v->ob_type == w->ob_type &&
|
2006-08-23 21:41:19 -03:00
|
|
|
(f = v->ob_type->tp_compare) != NULL) {
|
|
|
|
return (*f)(v, w);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Now try three-way compare before giving up. This is intentionally
|
|
|
|
elaborate; if you have a it will raise TypeError if it detects two
|
|
|
|
objects that aren't ordered with respect to each other. */
|
|
|
|
ok = PyObject_RichCompareBool(v, w, Py_LT);
|
|
|
|
if (ok < 0)
|
|
|
|
return -1; /* Error */
|
|
|
|
if (ok)
|
|
|
|
return -1; /* Less than */
|
|
|
|
ok = PyObject_RichCompareBool(v, w, Py_GT);
|
|
|
|
if (ok < 0)
|
|
|
|
return -1; /* Error */
|
|
|
|
if (ok)
|
|
|
|
return 1; /* Greater than */
|
|
|
|
ok = PyObject_RichCompareBool(v, w, Py_EQ);
|
|
|
|
if (ok < 0)
|
|
|
|
return -1; /* Error */
|
|
|
|
if (ok)
|
|
|
|
return 0; /* Equal */
|
|
|
|
|
|
|
|
/* Give up */
|
|
|
|
PyErr_Format(PyExc_TypeError,
|
2006-08-29 01:39:12 -03:00
|
|
|
"unorderable types: '%.100s' != '%.100s'",
|
2006-08-23 21:41:19 -03:00
|
|
|
v->ob_type->tp_name,
|
|
|
|
w->ob_type->tp_name);
|
|
|
|
return -1;
|
1995-01-12 07:26:10 -04:00
|
|
|
}
|
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
/* Perform a three-way comparison. This wraps do_compare() with a check for
|
|
|
|
NULL arguments and a recursion check. */
|
1990-10-14 09:07:46 -03:00
|
|
|
int
|
2000-07-09 12:48:49 -03:00
|
|
|
PyObject_Compare(PyObject *v, PyObject *w)
|
1990-10-14 09:07:46 -03:00
|
|
|
{
|
2006-08-23 21:41:19 -03:00
|
|
|
int res;
|
2000-04-14 16:13:24 -03:00
|
|
|
|
1997-05-22 21:06:51 -03:00
|
|
|
if (v == NULL || w == NULL) {
|
2006-08-23 21:41:19 -03:00
|
|
|
if (!PyErr_Occurred())
|
|
|
|
PyErr_BadInternalCall();
|
1997-05-22 21:06:51 -03:00
|
|
|
return -1;
|
|
|
|
}
|
2003-10-28 08:05:48 -04:00
|
|
|
if (Py_EnterRecursiveCall(" in cmp"))
|
|
|
|
return -1;
|
2006-08-23 21:41:19 -03:00
|
|
|
res = do_compare(v, w);
|
2003-10-28 08:05:48 -04:00
|
|
|
Py_LeaveRecursiveCall();
|
2006-08-23 21:41:19 -03:00
|
|
|
return res < 0 ? -1 : res;
|
2001-01-17 11:24:28 -04:00
|
|
|
}
|
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
/* Map rich comparison operators to their swapped version, e.g. LT <--> GT */
|
|
|
|
int _Py_SwappedOp[] = {Py_GT, Py_GE, Py_EQ, Py_NE, Py_LT, Py_LE};
|
2001-06-09 04:34:05 -03:00
|
|
|
|
2006-12-19 17:35:46 -04:00
|
|
|
static char *opstrings[] = {"<", "<=", "==", "!=", ">", ">="};
|
1990-10-14 09:07:46 -03:00
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
/* Perform a rich comparison, raising TypeError when the requested comparison
|
|
|
|
operator is not supported. */
|
2001-01-21 12:25:18 -04:00
|
|
|
static PyObject *
|
2006-08-23 21:41:19 -03:00
|
|
|
do_richcompare(PyObject *v, PyObject *w, int op)
|
2001-01-17 11:24:28 -04:00
|
|
|
{
|
2006-08-23 21:41:19 -03:00
|
|
|
richcmpfunc f;
|
2001-01-17 11:24:28 -04:00
|
|
|
PyObject *res;
|
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
if (v->ob_type != w->ob_type &&
|
|
|
|
PyType_IsSubtype(w->ob_type, v->ob_type) &&
|
|
|
|
(f = w->ob_type->tp_richcompare) != NULL) {
|
|
|
|
res = (*f)(w, v, _Py_SwappedOp[op]);
|
|
|
|
if (res != Py_NotImplemented)
|
|
|
|
return res;
|
|
|
|
Py_DECREF(res);
|
|
|
|
}
|
|
|
|
if ((f = v->ob_type->tp_richcompare) != NULL) {
|
|
|
|
res = (*f)(v, w, op);
|
|
|
|
if (res != Py_NotImplemented)
|
|
|
|
return res;
|
|
|
|
Py_DECREF(res);
|
|
|
|
}
|
|
|
|
if ((f = w->ob_type->tp_richcompare) != NULL) {
|
|
|
|
res = (*f)(w, v, _Py_SwappedOp[op]);
|
|
|
|
if (res != Py_NotImplemented)
|
|
|
|
return res;
|
|
|
|
Py_DECREF(res);
|
|
|
|
}
|
|
|
|
/* If neither object implements it, provide a sensible default
|
|
|
|
for == and !=, but raise an exception for ordering. */
|
|
|
|
switch (op) {
|
|
|
|
case Py_EQ:
|
|
|
|
res = (v == w) ? Py_True : Py_False;
|
|
|
|
break;
|
|
|
|
case Py_NE:
|
|
|
|
res = (v != w) ? Py_True : Py_False;
|
|
|
|
break;
|
|
|
|
default:
|
2006-12-19 17:35:46 -04:00
|
|
|
/* XXX Special-case None so it doesn't show as NoneType() */
|
2006-08-23 21:41:19 -03:00
|
|
|
PyErr_Format(PyExc_TypeError,
|
|
|
|
"unorderable types: %.100s() %s %.100s()",
|
|
|
|
v->ob_type->tp_name,
|
|
|
|
opstrings[op],
|
|
|
|
w->ob_type->tp_name);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
Py_INCREF(res);
|
|
|
|
return res;
|
2001-01-17 11:24:28 -04:00
|
|
|
}
|
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
/* Perform a rich comparison with object result. This wraps do_richcompare()
|
|
|
|
with a check for NULL arguments and a recursion check. */
|
|
|
|
|
2001-01-17 11:24:28 -04:00
|
|
|
PyObject *
|
|
|
|
PyObject_RichCompare(PyObject *v, PyObject *w, int op)
|
|
|
|
{
|
|
|
|
PyObject *res;
|
|
|
|
|
|
|
|
assert(Py_LT <= op && op <= Py_GE);
|
2006-08-23 21:41:19 -03:00
|
|
|
if (v == NULL || w == NULL) {
|
|
|
|
if (!PyErr_Occurred())
|
|
|
|
PyErr_BadInternalCall();
|
2003-10-28 08:05:48 -04:00
|
|
|
return NULL;
|
2001-01-17 11:24:28 -04:00
|
|
|
}
|
2006-08-23 21:41:19 -03:00
|
|
|
if (Py_EnterRecursiveCall(" in cmp"))
|
|
|
|
return NULL;
|
|
|
|
res = do_richcompare(v, w, op);
|
2003-10-28 08:05:48 -04:00
|
|
|
Py_LeaveRecursiveCall();
|
2001-01-17 11:24:28 -04:00
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
/* Perform a rich comparison with integer result. This wraps
|
|
|
|
PyObject_RichCompare(), returning -1 for error, 0 for false, 1 for true. */
|
2001-01-17 11:24:28 -04:00
|
|
|
int
|
|
|
|
PyObject_RichCompareBool(PyObject *v, PyObject *w, int op)
|
|
|
|
{
|
2004-03-21 13:01:44 -04:00
|
|
|
PyObject *res;
|
2001-01-17 11:24:28 -04:00
|
|
|
int ok;
|
|
|
|
|
2008-11-12 19:23:36 -04:00
|
|
|
/* Quick result when objects are the same.
|
|
|
|
Guarantees that identity implies equality. */
|
|
|
|
if (v == w) {
|
|
|
|
if (op == Py_EQ)
|
|
|
|
return 1;
|
|
|
|
else if (op == Py_NE)
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2004-03-21 13:01:44 -04:00
|
|
|
res = PyObject_RichCompare(v, w, op);
|
2001-01-17 11:24:28 -04:00
|
|
|
if (res == NULL)
|
|
|
|
return -1;
|
2002-08-24 02:33:28 -03:00
|
|
|
if (PyBool_Check(res))
|
|
|
|
ok = (res == Py_True);
|
|
|
|
else
|
|
|
|
ok = PyObject_IsTrue(res);
|
2001-01-17 11:24:28 -04:00
|
|
|
Py_DECREF(res);
|
|
|
|
return ok;
|
|
|
|
}
|
2000-06-29 16:17:04 -03:00
|
|
|
|
2006-08-23 21:41:19 -03:00
|
|
|
/* Turn the result of a three-way comparison into the result expected by a
|
|
|
|
rich comparison. */
|
|
|
|
PyObject *
|
|
|
|
Py_CmpToRich(int op, int cmp)
|
|
|
|
{
|
|
|
|
PyObject *res;
|
|
|
|
int ok;
|
|
|
|
|
|
|
|
if (PyErr_Occurred())
|
|
|
|
return NULL;
|
|
|
|
switch (op) {
|
|
|
|
case Py_LT:
|
2007-11-06 17:34:58 -04:00
|
|
|
ok = cmp < 0;
|
2006-08-23 21:41:19 -03:00
|
|
|
break;
|
|
|
|
case Py_LE:
|
2007-11-06 17:34:58 -04:00
|
|
|
ok = cmp <= 0;
|
2006-08-23 21:41:19 -03:00
|
|
|
break;
|
|
|
|
case Py_EQ:
|
2007-11-06 17:34:58 -04:00
|
|
|
ok = cmp == 0;
|
2006-08-23 21:41:19 -03:00
|
|
|
break;
|
|
|
|
case Py_NE:
|
2007-11-06 17:34:58 -04:00
|
|
|
ok = cmp != 0;
|
2006-08-23 21:41:19 -03:00
|
|
|
break;
|
2007-11-06 17:34:58 -04:00
|
|
|
case Py_GT:
|
|
|
|
ok = cmp > 0;
|
2006-08-23 21:41:19 -03:00
|
|
|
break;
|
|
|
|
case Py_GE:
|
2007-11-06 17:34:58 -04:00
|
|
|
ok = cmp >= 0;
|
2006-08-23 21:41:19 -03:00
|
|
|
break;
|
|
|
|
default:
|
2007-11-06 17:34:58 -04:00
|
|
|
PyErr_BadArgument();
|
2006-08-23 21:41:19 -03:00
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
res = ok ? Py_True : Py_False;
|
|
|
|
Py_INCREF(res);
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
2000-06-29 16:17:04 -03:00
|
|
|
/* Set of hash utility functions to help maintaining the invariant that
|
2004-03-21 13:35:06 -04:00
|
|
|
if a==b then hash(a)==hash(b)
|
2000-06-29 16:17:04 -03:00
|
|
|
|
|
|
|
All the utility functions (_Py_Hash*()) return "-1" to signify an error.
|
|
|
|
*/
|
|
|
|
|
|
|
|
long
|
2000-07-09 12:48:49 -03:00
|
|
|
_Py_HashDouble(double v)
|
2000-06-29 16:17:04 -03:00
|
|
|
{
|
2000-08-15 00:34:48 -03:00
|
|
|
double intpart, fractpart;
|
|
|
|
int expo;
|
|
|
|
long hipart;
|
|
|
|
long x; /* the final hash value */
|
|
|
|
/* This is designed so that Python numbers of different types
|
|
|
|
* that compare equal hash to the same value; otherwise comparisons
|
|
|
|
* of mapping keys will turn out weird.
|
|
|
|
*/
|
|
|
|
|
|
|
|
fractpart = modf(v, &intpart);
|
|
|
|
if (fractpart == 0.0) {
|
|
|
|
/* This must return the same hash as an equal int or long. */
|
|
|
|
if (intpart > LONG_MAX || -intpart > LONG_MAX) {
|
|
|
|
/* Convert to long and use its hash. */
|
|
|
|
PyObject *plong; /* converted to Python long */
|
|
|
|
if (Py_IS_INFINITY(intpart))
|
|
|
|
/* can't convert to long int -- arbitrary */
|
|
|
|
v = v < 0 ? -271828.0 : 314159.0;
|
|
|
|
plong = PyLong_FromDouble(v);
|
|
|
|
if (plong == NULL)
|
|
|
|
return -1;
|
|
|
|
x = PyObject_Hash(plong);
|
|
|
|
Py_DECREF(plong);
|
|
|
|
return x;
|
|
|
|
}
|
|
|
|
/* Fits in a C long == a Python int, so is its own hash. */
|
|
|
|
x = (long)intpart;
|
|
|
|
if (x == -1)
|
|
|
|
x = -2;
|
|
|
|
return x;
|
|
|
|
}
|
|
|
|
/* The fractional part is non-zero, so we don't have to worry about
|
|
|
|
* making this match the hash of some other type.
|
|
|
|
* Use frexp to get at the bits in the double.
|
2000-06-29 16:17:04 -03:00
|
|
|
* Since the VAX D double format has 56 mantissa bits, which is the
|
|
|
|
* most of any double format in use, each of these parts may have as
|
|
|
|
* many as (but no more than) 56 significant bits.
|
2000-08-15 00:34:48 -03:00
|
|
|
* So, assuming sizeof(long) >= 4, each part can be broken into two
|
|
|
|
* longs; frexp and multiplication are used to do that.
|
|
|
|
* Also, since the Cray double format has 15 exponent bits, which is
|
|
|
|
* the most of any double format in use, shifting the exponent field
|
|
|
|
* left by 15 won't overflow a long (again assuming sizeof(long) >= 4).
|
2000-06-29 16:17:04 -03:00
|
|
|
*/
|
2000-08-15 00:34:48 -03:00
|
|
|
v = frexp(v, &expo);
|
|
|
|
v *= 2147483648.0; /* 2**31 */
|
|
|
|
hipart = (long)v; /* take the top 32 bits */
|
|
|
|
v = (v - (double)hipart) * 2147483648.0; /* get the next 32 bits */
|
|
|
|
x = hipart + (long)v + (expo << 15);
|
|
|
|
if (x == -1)
|
|
|
|
x = -2;
|
|
|
|
return x;
|
2000-06-29 16:17:04 -03:00
|
|
|
}
|
|
|
|
|
|
|
|
long
|
2000-07-09 12:48:49 -03:00
|
|
|
_Py_HashPointer(void *p)
|
2000-06-29 16:17:04 -03:00
|
|
|
{
|
|
|
|
#if SIZEOF_LONG >= SIZEOF_VOID_P
|
|
|
|
return (long)p;
|
|
|
|
#else
|
|
|
|
/* convert to a Python long and hash that */
|
|
|
|
PyObject* longobj;
|
|
|
|
long x;
|
2002-07-07 02:13:56 -03:00
|
|
|
|
2000-06-29 16:17:04 -03:00
|
|
|
if ((longobj = PyLong_FromVoidPtr(p)) == NULL) {
|
|
|
|
x = -1;
|
|
|
|
goto finally;
|
|
|
|
}
|
|
|
|
x = PyObject_Hash(longobj);
|
2002-07-07 02:13:56 -03:00
|
|
|
|
2000-06-29 16:17:04 -03:00
|
|
|
finally:
|
|
|
|
Py_XDECREF(longobj);
|
|
|
|
return x;
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
2008-07-15 12:46:38 -03:00
|
|
|
long
|
|
|
|
PyObject_HashNotImplemented(PyObject *v)
|
|
|
|
{
|
|
|
|
PyErr_Format(PyExc_TypeError, "unhashable type: '%.200s'",
|
|
|
|
Py_TYPE(v)->tp_name);
|
|
|
|
return -1;
|
|
|
|
}
|
2000-06-29 16:17:04 -03:00
|
|
|
|
1993-03-29 06:43:31 -04:00
|
|
|
long
|
2000-07-09 12:48:49 -03:00
|
|
|
PyObject_Hash(PyObject *v)
|
1993-03-29 06:43:31 -04:00
|
|
|
{
|
2008-07-15 12:46:38 -03:00
|
|
|
PyTypeObject *tp = Py_TYPE(v);
|
1993-03-29 06:43:31 -04:00
|
|
|
if (tp->tp_hash != NULL)
|
|
|
|
return (*tp->tp_hash)(v);
|
2008-12-30 03:29:12 -04:00
|
|
|
/* To keep to the general practice that inheriting
|
|
|
|
* solely from object in C code should work without
|
|
|
|
* an explicit call to PyType_Ready, we implicitly call
|
|
|
|
* PyType_Ready here and then check the tp_hash slot again
|
|
|
|
*/
|
|
|
|
if (tp->tp_dict == NULL) {
|
|
|
|
if (PyType_Ready(tp) < 0)
|
|
|
|
return -1;
|
|
|
|
if (tp->tp_hash != NULL)
|
|
|
|
return (*tp->tp_hash)(v);
|
|
|
|
}
|
2006-08-17 02:42:55 -03:00
|
|
|
/* Otherwise, the object can't be hashed */
|
2008-07-15 12:46:38 -03:00
|
|
|
return PyObject_HashNotImplemented(v);
|
1993-03-29 06:43:31 -04:00
|
|
|
}
|
|
|
|
|
1997-05-02 00:12:38 -03:00
|
|
|
PyObject *
|
2005-12-10 14:50:16 -04:00
|
|
|
PyObject_GetAttrString(PyObject *v, const char *name)
|
1990-12-20 11:06:42 -04:00
|
|
|
{
|
2001-08-02 01:15:00 -03:00
|
|
|
PyObject *w, *res;
|
1996-08-09 17:52:03 -03:00
|
|
|
|
2007-12-18 22:45:37 -04:00
|
|
|
if (Py_TYPE(v)->tp_getattr != NULL)
|
|
|
|
return (*Py_TYPE(v)->tp_getattr)(v, (char*)name);
|
2007-06-10 06:51:05 -03:00
|
|
|
w = PyUnicode_InternFromString(name);
|
2001-08-02 01:15:00 -03:00
|
|
|
if (w == NULL)
|
|
|
|
return NULL;
|
|
|
|
res = PyObject_GetAttr(v, w);
|
|
|
|
Py_XDECREF(w);
|
|
|
|
return res;
|
1990-12-20 11:06:42 -04:00
|
|
|
}
|
|
|
|
|
1993-07-11 16:55:34 -03:00
|
|
|
int
|
2005-12-10 14:50:16 -04:00
|
|
|
PyObject_HasAttrString(PyObject *v, const char *name)
|
1993-07-11 16:55:34 -03:00
|
|
|
{
|
1997-05-02 00:12:38 -03:00
|
|
|
PyObject *res = PyObject_GetAttrString(v, name);
|
1993-07-11 16:55:34 -03:00
|
|
|
if (res != NULL) {
|
1997-05-02 00:12:38 -03:00
|
|
|
Py_DECREF(res);
|
1993-07-11 16:55:34 -03:00
|
|
|
return 1;
|
|
|
|
}
|
1997-05-02 00:12:38 -03:00
|
|
|
PyErr_Clear();
|
1993-07-11 16:55:34 -03:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
1990-12-20 11:06:42 -04:00
|
|
|
int
|
2005-12-10 14:50:16 -04:00
|
|
|
PyObject_SetAttrString(PyObject *v, const char *name, PyObject *w)
|
1990-12-20 11:06:42 -04:00
|
|
|
{
|
2001-08-02 01:15:00 -03:00
|
|
|
PyObject *s;
|
|
|
|
int res;
|
1996-08-09 17:52:03 -03:00
|
|
|
|
2007-12-18 22:45:37 -04:00
|
|
|
if (Py_TYPE(v)->tp_setattr != NULL)
|
|
|
|
return (*Py_TYPE(v)->tp_setattr)(v, (char*)name, w);
|
2007-06-10 06:51:05 -03:00
|
|
|
s = PyUnicode_InternFromString(name);
|
2001-08-02 01:15:00 -03:00
|
|
|
if (s == NULL)
|
|
|
|
return -1;
|
|
|
|
res = PyObject_SetAttr(v, s, w);
|
|
|
|
Py_XDECREF(s);
|
|
|
|
return res;
|
1993-05-12 05:24:20 -03:00
|
|
|
}
|
|
|
|
|
1997-05-20 15:34:44 -03:00
|
|
|
PyObject *
|
2000-07-09 12:48:49 -03:00
|
|
|
PyObject_GetAttr(PyObject *v, PyObject *name)
|
1997-05-20 15:34:44 -03:00
|
|
|
{
|
2007-12-18 22:45:37 -04:00
|
|
|
PyTypeObject *tp = Py_TYPE(v);
|
2001-08-02 01:15:00 -03:00
|
|
|
|
Merged revisions 56467-56482 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/p3yk
................
r56477 | martin.v.loewis | 2007-07-21 09:04:38 +0200 (Sa, 21 Jul 2007) | 11 lines
Merged revisions 56466-56476 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r56476 | martin.v.loewis | 2007-07-21 08:55:02 +0200 (Sa, 21 Jul 2007) | 4 lines
PEP 3123: Provide forward compatibility with Python 3.0, while keeping
backwards compatibility. Add Py_Refcnt, Py_Type, Py_Size, and
PyVarObject_HEAD_INIT.
........
................
r56478 | martin.v.loewis | 2007-07-21 09:47:23 +0200 (Sa, 21 Jul 2007) | 2 lines
PEP 3123: Use proper C inheritance for PyObject.
................
r56479 | martin.v.loewis | 2007-07-21 10:06:55 +0200 (Sa, 21 Jul 2007) | 3 lines
Add longintrepr.h to Python.h, so that the compiler can
see that PyFalse is really some kind of PyObject*.
................
r56480 | martin.v.loewis | 2007-07-21 10:47:18 +0200 (Sa, 21 Jul 2007) | 2 lines
Qualify SHIFT, MASK, BASE.
................
r56482 | martin.v.loewis | 2007-07-21 19:10:57 +0200 (Sa, 21 Jul 2007) | 2 lines
Correctly refer to _ob_next.
................
2007-07-21 14:22:18 -03:00
|
|
|
if (!PyUnicode_Check(name)) {
|
2007-06-10 06:51:05 -03:00
|
|
|
PyErr_Format(PyExc_TypeError,
|
|
|
|
"attribute name must be string, not '%.200s'",
|
|
|
|
name->ob_type->tp_name);
|
|
|
|
return NULL;
|
2000-06-23 11:36:32 -03:00
|
|
|
}
|
2001-08-02 01:15:00 -03:00
|
|
|
if (tp->tp_getattro != NULL)
|
|
|
|
return (*tp->tp_getattro)(v, name);
|
|
|
|
if (tp->tp_getattr != NULL)
|
2008-08-07 15:54:33 -03:00
|
|
|
return (*tp->tp_getattr)(v, _PyUnicode_AsString(name));
|
2001-08-02 01:15:00 -03:00
|
|
|
PyErr_Format(PyExc_AttributeError,
|
2007-06-11 12:37:20 -03:00
|
|
|
"'%.50s' object has no attribute '%U'",
|
|
|
|
tp->tp_name, name);
|
2001-08-02 01:15:00 -03:00
|
|
|
return NULL;
|
1997-05-20 15:34:44 -03:00
|
|
|
}
|
|
|
|
|
|
|
|
int
|
2000-07-09 12:48:49 -03:00
|
|
|
PyObject_HasAttr(PyObject *v, PyObject *name)
|
1997-05-20 15:34:44 -03:00
|
|
|
{
|
|
|
|
PyObject *res = PyObject_GetAttr(v, name);
|
|
|
|
if (res != NULL) {
|
|
|
|
Py_DECREF(res);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
PyErr_Clear();
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
int
|
2000-07-09 12:48:49 -03:00
|
|
|
PyObject_SetAttr(PyObject *v, PyObject *name, PyObject *value)
|
1997-05-20 15:34:44 -03:00
|
|
|
{
|
2007-12-18 22:45:37 -04:00
|
|
|
PyTypeObject *tp = Py_TYPE(v);
|
1997-05-20 15:34:44 -03:00
|
|
|
int err;
|
2000-09-18 13:20:57 -03:00
|
|
|
|
2007-06-10 06:51:05 -03:00
|
|
|
if (!PyUnicode_Check(name)) {
|
|
|
|
PyErr_Format(PyExc_TypeError,
|
|
|
|
"attribute name must be string, not '%.200s'",
|
|
|
|
name->ob_type->tp_name);
|
|
|
|
return -1;
|
2000-06-23 11:36:32 -03:00
|
|
|
}
|
2007-05-03 21:41:39 -03:00
|
|
|
Py_INCREF(name);
|
2001-08-02 01:15:00 -03:00
|
|
|
|
2007-06-10 06:51:05 -03:00
|
|
|
PyUnicode_InternInPlace(&name);
|
2001-08-02 01:15:00 -03:00
|
|
|
if (tp->tp_setattro != NULL) {
|
|
|
|
err = (*tp->tp_setattro)(v, name, value);
|
|
|
|
Py_DECREF(name);
|
|
|
|
return err;
|
|
|
|
}
|
|
|
|
if (tp->tp_setattr != NULL) {
|
2008-08-07 15:54:33 -03:00
|
|
|
err = (*tp->tp_setattr)(v, _PyUnicode_AsString(name), value);
|
2001-08-02 01:15:00 -03:00
|
|
|
Py_DECREF(name);
|
|
|
|
return err;
|
2000-09-18 13:20:57 -03:00
|
|
|
}
|
1997-05-20 15:34:44 -03:00
|
|
|
Py_DECREF(name);
|
2007-05-03 21:41:39 -03:00
|
|
|
assert(name->ob_refcnt >= 1);
|
2001-08-02 01:15:00 -03:00
|
|
|
if (tp->tp_getattr == NULL && tp->tp_getattro == NULL)
|
|
|
|
PyErr_Format(PyExc_TypeError,
|
|
|
|
"'%.100s' object has no attributes "
|
2007-06-11 12:37:20 -03:00
|
|
|
"(%s .%U)",
|
2001-08-02 01:15:00 -03:00
|
|
|
tp->tp_name,
|
|
|
|
value==NULL ? "del" : "assign to",
|
2007-06-11 12:37:20 -03:00
|
|
|
name);
|
2001-08-02 01:15:00 -03:00
|
|
|
else
|
|
|
|
PyErr_Format(PyExc_TypeError,
|
|
|
|
"'%.100s' object has only read-only attributes "
|
2007-06-11 12:37:20 -03:00
|
|
|
"(%s .%U)",
|
2001-08-02 01:15:00 -03:00
|
|
|
tp->tp_name,
|
|
|
|
value==NULL ? "del" : "assign to",
|
2007-06-11 12:37:20 -03:00
|
|
|
name);
|
2001-08-02 01:15:00 -03:00
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Helper to get a pointer to an object's __dict__ slot, if any */
|
|
|
|
|
|
|
|
PyObject **
|
|
|
|
_PyObject_GetDictPtr(PyObject *obj)
|
|
|
|
{
|
2006-03-07 08:08:51 -04:00
|
|
|
Py_ssize_t dictoffset;
|
2007-12-18 22:45:37 -04:00
|
|
|
PyTypeObject *tp = Py_TYPE(obj);
|
2001-08-02 01:15:00 -03:00
|
|
|
|
|
|
|
dictoffset = tp->tp_dictoffset;
|
|
|
|
if (dictoffset == 0)
|
|
|
|
return NULL;
|
|
|
|
if (dictoffset < 0) {
|
2006-02-15 13:27:45 -04:00
|
|
|
Py_ssize_t tsize;
|
2002-03-01 18:24:49 -04:00
|
|
|
size_t size;
|
|
|
|
|
|
|
|
tsize = ((PyVarObject *)obj)->ob_size;
|
|
|
|
if (tsize < 0)
|
|
|
|
tsize = -tsize;
|
|
|
|
size = _PyObject_VAR_SIZE(tp, tsize);
|
|
|
|
|
2001-10-06 18:27:34 -03:00
|
|
|
dictoffset += (long)size;
|
|
|
|
assert(dictoffset > 0);
|
|
|
|
assert(dictoffset % SIZEOF_VOID_P == 0);
|
2001-08-02 01:15:00 -03:00
|
|
|
}
|
|
|
|
return (PyObject **) ((char *)obj + dictoffset);
|
|
|
|
}
|
|
|
|
|
2003-03-17 04:24:35 -04:00
|
|
|
PyObject *
|
2003-03-17 15:46:11 -04:00
|
|
|
PyObject_SelfIter(PyObject *obj)
|
2003-03-17 04:24:35 -04:00
|
|
|
{
|
|
|
|
Py_INCREF(obj);
|
|
|
|
return obj;
|
|
|
|
}
|
|
|
|
|
2004-09-14 14:09:47 -03:00
|
|
|
/* Generic GetAttr functions - put these in your tp_[gs]etattro slot */
|
|
|
|
|
2001-08-02 01:15:00 -03:00
|
|
|
PyObject *
|
|
|
|
PyObject_GenericGetAttr(PyObject *obj, PyObject *name)
|
|
|
|
{
|
2007-12-18 22:45:37 -04:00
|
|
|
PyTypeObject *tp = Py_TYPE(obj);
|
2002-08-19 16:22:50 -03:00
|
|
|
PyObject *descr = NULL;
|
2001-12-04 11:54:53 -04:00
|
|
|
PyObject *res = NULL;
|
2001-08-02 01:15:00 -03:00
|
|
|
descrgetfunc f;
|
2006-03-07 08:08:51 -04:00
|
|
|
Py_ssize_t dictoffset;
|
2001-08-02 01:15:00 -03:00
|
|
|
PyObject **dictptr;
|
|
|
|
|
2007-06-10 06:51:05 -03:00
|
|
|
if (!PyUnicode_Check(name)){
|
|
|
|
PyErr_Format(PyExc_TypeError,
|
|
|
|
"attribute name must be string, not '%.200s'",
|
|
|
|
name->ob_type->tp_name);
|
|
|
|
return NULL;
|
2001-12-04 11:54:53 -04:00
|
|
|
}
|
|
|
|
else
|
|
|
|
Py_INCREF(name);
|
|
|
|
|
2001-08-02 01:15:00 -03:00
|
|
|
if (tp->tp_dict == NULL) {
|
2001-08-07 14:24:28 -03:00
|
|
|
if (PyType_Ready(tp) < 0)
|
2001-12-04 11:54:53 -04:00
|
|
|
goto done;
|
2001-08-02 01:15:00 -03:00
|
|
|
}
|
|
|
|
|
Merged revisions 59921-59932 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59923 | raymond.hettinger | 2008-01-11 19:04:55 +0100 (Fri, 11 Jan 2008) | 1 line
Speed-up and simplify code urlparse's result objects.
........
r59924 | andrew.kuchling | 2008-01-11 20:33:24 +0100 (Fri, 11 Jan 2008) | 1 line
Bug #1790: update link; remove outdated paragraph
........
r59925 | thomas.heller | 2008-01-11 20:34:06 +0100 (Fri, 11 Jan 2008) | 5 lines
Raise an error instead of crashing with a segfault when a NULL
function pointer is called.
Will backport to release25-maint.
........
r59927 | thomas.heller | 2008-01-11 21:29:19 +0100 (Fri, 11 Jan 2008) | 4 lines
Fix a potential 'SystemError: NULL result without error'.
NULL may be a valid return value from PyLong_AsVoidPtr.
Will backport to release25-maint.
........
r59928 | raymond.hettinger | 2008-01-12 00:25:18 +0100 (Sat, 12 Jan 2008) | 1 line
Update the opcode docs for STORE_MAP and BUILD_MAP
........
r59929 | mark.dickinson | 2008-01-12 02:56:00 +0100 (Sat, 12 Jan 2008) | 4 lines
Issue 1780: Allow leading and trailing whitespace in Decimal constructor,
when constructing from a string. Disallow trailing newlines in
Context.create_decimal.
........
r59930 | georg.brandl | 2008-01-12 11:53:29 +0100 (Sat, 12 Jan 2008) | 3 lines
Move OSError docs to exceptions doc, remove obsolete descriptions
from os docs, rework posix docs.
........
r59931 | georg.brandl | 2008-01-12 14:47:57 +0100 (Sat, 12 Jan 2008) | 3 lines
Patch #1700288: Method cache optimization, by Armin Rigo, ported to
2.6 by Kevin Jacobs.
........
r59932 | georg.brandl | 2008-01-12 17:11:09 +0100 (Sat, 12 Jan 2008) | 2 lines
Fix editing glitch.
........
2008-01-12 15:39:10 -04:00
|
|
|
#if 0 /* XXX this is not quite _PyType_Lookup anymore */
|
2002-08-19 16:22:50 -03:00
|
|
|
/* Inline _PyType_Lookup */
|
|
|
|
{
|
2006-02-15 13:27:45 -04:00
|
|
|
Py_ssize_t i, n;
|
2002-08-19 16:22:50 -03:00
|
|
|
PyObject *mro, *base, *dict;
|
|
|
|
|
|
|
|
/* Look in tp_dict of types in MRO */
|
|
|
|
mro = tp->tp_mro;
|
|
|
|
assert(mro != NULL);
|
|
|
|
assert(PyTuple_Check(mro));
|
|
|
|
n = PyTuple_GET_SIZE(mro);
|
|
|
|
for (i = 0; i < n; i++) {
|
|
|
|
base = PyTuple_GET_ITEM(mro, i);
|
2006-08-17 02:42:55 -03:00
|
|
|
assert(PyType_Check(base));
|
|
|
|
dict = ((PyTypeObject *)base)->tp_dict;
|
2002-08-19 16:22:50 -03:00
|
|
|
assert(dict && PyDict_Check(dict));
|
|
|
|
descr = PyDict_GetItem(dict, name);
|
|
|
|
if (descr != NULL)
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
Merged revisions 59921-59932 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59923 | raymond.hettinger | 2008-01-11 19:04:55 +0100 (Fri, 11 Jan 2008) | 1 line
Speed-up and simplify code urlparse's result objects.
........
r59924 | andrew.kuchling | 2008-01-11 20:33:24 +0100 (Fri, 11 Jan 2008) | 1 line
Bug #1790: update link; remove outdated paragraph
........
r59925 | thomas.heller | 2008-01-11 20:34:06 +0100 (Fri, 11 Jan 2008) | 5 lines
Raise an error instead of crashing with a segfault when a NULL
function pointer is called.
Will backport to release25-maint.
........
r59927 | thomas.heller | 2008-01-11 21:29:19 +0100 (Fri, 11 Jan 2008) | 4 lines
Fix a potential 'SystemError: NULL result without error'.
NULL may be a valid return value from PyLong_AsVoidPtr.
Will backport to release25-maint.
........
r59928 | raymond.hettinger | 2008-01-12 00:25:18 +0100 (Sat, 12 Jan 2008) | 1 line
Update the opcode docs for STORE_MAP and BUILD_MAP
........
r59929 | mark.dickinson | 2008-01-12 02:56:00 +0100 (Sat, 12 Jan 2008) | 4 lines
Issue 1780: Allow leading and trailing whitespace in Decimal constructor,
when constructing from a string. Disallow trailing newlines in
Context.create_decimal.
........
r59930 | georg.brandl | 2008-01-12 11:53:29 +0100 (Sat, 12 Jan 2008) | 3 lines
Move OSError docs to exceptions doc, remove obsolete descriptions
from os docs, rework posix docs.
........
r59931 | georg.brandl | 2008-01-12 14:47:57 +0100 (Sat, 12 Jan 2008) | 3 lines
Patch #1700288: Method cache optimization, by Armin Rigo, ported to
2.6 by Kevin Jacobs.
........
r59932 | georg.brandl | 2008-01-12 17:11:09 +0100 (Sat, 12 Jan 2008) | 2 lines
Fix editing glitch.
........
2008-01-12 15:39:10 -04:00
|
|
|
#else
|
|
|
|
descr = _PyType_Lookup(tp, name);
|
|
|
|
#endif
|
2002-08-19 16:22:50 -03:00
|
|
|
|
2003-08-15 10:07:47 -03:00
|
|
|
Py_XINCREF(descr);
|
|
|
|
|
2001-08-02 01:15:00 -03:00
|
|
|
f = NULL;
|
2006-07-27 18:53:35 -03:00
|
|
|
if (descr != NULL) {
|
2001-08-02 01:15:00 -03:00
|
|
|
f = descr->ob_type->tp_descr_get;
|
2001-12-04 11:54:53 -04:00
|
|
|
if (f != NULL && PyDescr_IsData(descr)) {
|
|
|
|
res = f(descr, obj, (PyObject *)obj->ob_type);
|
2003-08-15 10:07:47 -03:00
|
|
|
Py_DECREF(descr);
|
2001-12-04 11:54:53 -04:00
|
|
|
goto done;
|
|
|
|
}
|
2001-08-02 01:15:00 -03:00
|
|
|
}
|
|
|
|
|
2002-08-19 13:50:48 -03:00
|
|
|
/* Inline _PyObject_GetDictPtr */
|
|
|
|
dictoffset = tp->tp_dictoffset;
|
|
|
|
if (dictoffset != 0) {
|
|
|
|
PyObject *dict;
|
|
|
|
if (dictoffset < 0) {
|
2006-02-15 13:27:45 -04:00
|
|
|
Py_ssize_t tsize;
|
2002-08-19 13:50:48 -03:00
|
|
|
size_t size;
|
|
|
|
|
|
|
|
tsize = ((PyVarObject *)obj)->ob_size;
|
|
|
|
if (tsize < 0)
|
|
|
|
tsize = -tsize;
|
|
|
|
size = _PyObject_VAR_SIZE(tp, tsize);
|
|
|
|
|
|
|
|
dictoffset += (long)size;
|
|
|
|
assert(dictoffset > 0);
|
|
|
|
assert(dictoffset % SIZEOF_VOID_P == 0);
|
|
|
|
}
|
|
|
|
dictptr = (PyObject **) ((char *)obj + dictoffset);
|
|
|
|
dict = *dictptr;
|
2001-08-02 01:15:00 -03:00
|
|
|
if (dict != NULL) {
|
Merged revisions 60245-60277 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r60246 | guido.van.rossum | 2008-01-24 18:58:05 +0100 (Thu, 24 Jan 2008) | 2 lines
Fix test67.py from issue #1303614.
........
r60248 | raymond.hettinger | 2008-01-24 19:05:54 +0100 (Thu, 24 Jan 2008) | 1 line
Clean-up and speed-up code by accessing numerator/denominator directly. There's no reason to enforce readonliness
........
r60249 | raymond.hettinger | 2008-01-24 19:12:23 +0100 (Thu, 24 Jan 2008) | 1 line
Revert 60189 and restore performance.
........
r60250 | guido.van.rossum | 2008-01-24 19:21:02 +0100 (Thu, 24 Jan 2008) | 5 lines
News about recently fixed crashers:
- A few crashers fixed: weakref_in_del.py (issue #1377858);
loosing_dict_ref.py (issue #1303614, test67.py);
borrowed_ref_[34].py (not in tracker).
........
r60252 | thomas.heller | 2008-01-24 19:36:27 +0100 (Thu, 24 Jan 2008) | 7 lines
Use a PyDictObject again for the array type cache; retrieving items
from the WeakValueDictionary was slower by nearly a factor of 3.
To avoid leaks, weakref proxies for the array types are put into the
cache dict, with weakref callbacks that removes the entries when the
type goes away.
........
r60253 | thomas.heller | 2008-01-24 19:54:12 +0100 (Thu, 24 Jan 2008) | 2 lines
Replace Py_BuildValue with PyTuple_Pack because it is faster.
Also add a missing DECREF.
........
r60254 | raymond.hettinger | 2008-01-24 20:05:29 +0100 (Thu, 24 Jan 2008) | 1 line
Add support for trunc().
........
r60255 | thomas.heller | 2008-01-24 20:15:02 +0100 (Thu, 24 Jan 2008) | 5 lines
Invert the checks in get_[u]long and get_[u]longlong. The intent was
to not accept float types; the result was that integer-like objects
were not accepted.
Ported from release25-maint.
........
r60256 | raymond.hettinger | 2008-01-24 20:30:19 +0100 (Thu, 24 Jan 2008) | 1 line
Add support for int(r) just like the other numeric classes.
........
r60263 | raymond.hettinger | 2008-01-24 22:23:58 +0100 (Thu, 24 Jan 2008) | 1 line
Expand tests to include nested graph structures.
........
r60264 | raymond.hettinger | 2008-01-24 22:47:56 +0100 (Thu, 24 Jan 2008) | 1 line
Shorter pprint's for empty sets and frozensets. Fix indentation of frozensets. Add tests including two complex data structures.
........
r60265 | amaury.forgeotdarc | 2008-01-24 23:51:18 +0100 (Thu, 24 Jan 2008) | 14 lines
#1920: when considering a block starting by "while 0", the compiler optimized the
whole construct away, even when an 'else' clause is present::
while 0:
print("no")
else:
print("yes")
did not generate any code at all.
Now the compiler emits the 'else' block, like it already does for 'if' statements.
Will backport.
........
r60266 | amaury.forgeotdarc | 2008-01-24 23:59:25 +0100 (Thu, 24 Jan 2008) | 2 lines
News entry for r60265 (Issue 1920).
........
r60269 | raymond.hettinger | 2008-01-25 00:50:26 +0100 (Fri, 25 Jan 2008) | 1 line
More code cleanup. Remove unnecessary indirection to useless class methods.
........
r60270 | raymond.hettinger | 2008-01-25 01:21:54 +0100 (Fri, 25 Jan 2008) | 1 line
Add support for copy, deepcopy, and pickle.
........
r60271 | raymond.hettinger | 2008-01-25 01:33:45 +0100 (Fri, 25 Jan 2008) | 1 line
Mark todos and review comments.
........
r60272 | raymond.hettinger | 2008-01-25 02:13:12 +0100 (Fri, 25 Jan 2008) | 1 line
Add one other review comment.
........
r60273 | raymond.hettinger | 2008-01-25 02:23:38 +0100 (Fri, 25 Jan 2008) | 1 line
Fix-up signature for approximation.
........
r60274 | raymond.hettinger | 2008-01-25 02:46:33 +0100 (Fri, 25 Jan 2008) | 1 line
More design notes
........
r60276 | neal.norwitz | 2008-01-25 07:37:23 +0100 (Fri, 25 Jan 2008) | 6 lines
Make the test more robust by trying to reconnect up to 3 times
in case there were transient failures. This will hopefully silence
the buildbots for this test. As we find other tests that have a problem,
we can fix with a similar strategy assuming it is successful. It worked
on my box in a loop for 10+ runs where it would have an exception otherwise.
........
r60277 | neal.norwitz | 2008-01-25 09:04:16 +0100 (Fri, 25 Jan 2008) | 4 lines
Add prototypes to get the mathmodule.c to compile on OSF1 5.1 (Tru64)
and eliminate a compiler warning in floatobject.c. There might be
a better way to go about this, but it should be good enough for now.
........
2008-01-25 07:23:10 -04:00
|
|
|
Py_INCREF(dict);
|
2001-12-04 11:54:53 -04:00
|
|
|
res = PyDict_GetItem(dict, name);
|
2001-08-02 01:15:00 -03:00
|
|
|
if (res != NULL) {
|
|
|
|
Py_INCREF(res);
|
2003-08-15 10:07:47 -03:00
|
|
|
Py_XDECREF(descr);
|
Merged revisions 60245-60277 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r60246 | guido.van.rossum | 2008-01-24 18:58:05 +0100 (Thu, 24 Jan 2008) | 2 lines
Fix test67.py from issue #1303614.
........
r60248 | raymond.hettinger | 2008-01-24 19:05:54 +0100 (Thu, 24 Jan 2008) | 1 line
Clean-up and speed-up code by accessing numerator/denominator directly. There's no reason to enforce readonliness
........
r60249 | raymond.hettinger | 2008-01-24 19:12:23 +0100 (Thu, 24 Jan 2008) | 1 line
Revert 60189 and restore performance.
........
r60250 | guido.van.rossum | 2008-01-24 19:21:02 +0100 (Thu, 24 Jan 2008) | 5 lines
News about recently fixed crashers:
- A few crashers fixed: weakref_in_del.py (issue #1377858);
loosing_dict_ref.py (issue #1303614, test67.py);
borrowed_ref_[34].py (not in tracker).
........
r60252 | thomas.heller | 2008-01-24 19:36:27 +0100 (Thu, 24 Jan 2008) | 7 lines
Use a PyDictObject again for the array type cache; retrieving items
from the WeakValueDictionary was slower by nearly a factor of 3.
To avoid leaks, weakref proxies for the array types are put into the
cache dict, with weakref callbacks that removes the entries when the
type goes away.
........
r60253 | thomas.heller | 2008-01-24 19:54:12 +0100 (Thu, 24 Jan 2008) | 2 lines
Replace Py_BuildValue with PyTuple_Pack because it is faster.
Also add a missing DECREF.
........
r60254 | raymond.hettinger | 2008-01-24 20:05:29 +0100 (Thu, 24 Jan 2008) | 1 line
Add support for trunc().
........
r60255 | thomas.heller | 2008-01-24 20:15:02 +0100 (Thu, 24 Jan 2008) | 5 lines
Invert the checks in get_[u]long and get_[u]longlong. The intent was
to not accept float types; the result was that integer-like objects
were not accepted.
Ported from release25-maint.
........
r60256 | raymond.hettinger | 2008-01-24 20:30:19 +0100 (Thu, 24 Jan 2008) | 1 line
Add support for int(r) just like the other numeric classes.
........
r60263 | raymond.hettinger | 2008-01-24 22:23:58 +0100 (Thu, 24 Jan 2008) | 1 line
Expand tests to include nested graph structures.
........
r60264 | raymond.hettinger | 2008-01-24 22:47:56 +0100 (Thu, 24 Jan 2008) | 1 line
Shorter pprint's for empty sets and frozensets. Fix indentation of frozensets. Add tests including two complex data structures.
........
r60265 | amaury.forgeotdarc | 2008-01-24 23:51:18 +0100 (Thu, 24 Jan 2008) | 14 lines
#1920: when considering a block starting by "while 0", the compiler optimized the
whole construct away, even when an 'else' clause is present::
while 0:
print("no")
else:
print("yes")
did not generate any code at all.
Now the compiler emits the 'else' block, like it already does for 'if' statements.
Will backport.
........
r60266 | amaury.forgeotdarc | 2008-01-24 23:59:25 +0100 (Thu, 24 Jan 2008) | 2 lines
News entry for r60265 (Issue 1920).
........
r60269 | raymond.hettinger | 2008-01-25 00:50:26 +0100 (Fri, 25 Jan 2008) | 1 line
More code cleanup. Remove unnecessary indirection to useless class methods.
........
r60270 | raymond.hettinger | 2008-01-25 01:21:54 +0100 (Fri, 25 Jan 2008) | 1 line
Add support for copy, deepcopy, and pickle.
........
r60271 | raymond.hettinger | 2008-01-25 01:33:45 +0100 (Fri, 25 Jan 2008) | 1 line
Mark todos and review comments.
........
r60272 | raymond.hettinger | 2008-01-25 02:13:12 +0100 (Fri, 25 Jan 2008) | 1 line
Add one other review comment.
........
r60273 | raymond.hettinger | 2008-01-25 02:23:38 +0100 (Fri, 25 Jan 2008) | 1 line
Fix-up signature for approximation.
........
r60274 | raymond.hettinger | 2008-01-25 02:46:33 +0100 (Fri, 25 Jan 2008) | 1 line
More design notes
........
r60276 | neal.norwitz | 2008-01-25 07:37:23 +0100 (Fri, 25 Jan 2008) | 6 lines
Make the test more robust by trying to reconnect up to 3 times
in case there were transient failures. This will hopefully silence
the buildbots for this test. As we find other tests that have a problem,
we can fix with a similar strategy assuming it is successful. It worked
on my box in a loop for 10+ runs where it would have an exception otherwise.
........
r60277 | neal.norwitz | 2008-01-25 09:04:16 +0100 (Fri, 25 Jan 2008) | 4 lines
Add prototypes to get the mathmodule.c to compile on OSF1 5.1 (Tru64)
and eliminate a compiler warning in floatobject.c. There might be
a better way to go about this, but it should be good enough for now.
........
2008-01-25 07:23:10 -04:00
|
|
|
Py_DECREF(dict);
|
2001-12-04 11:54:53 -04:00
|
|
|
goto done;
|
2001-08-02 01:15:00 -03:00
|
|
|
}
|
Merged revisions 60245-60277 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r60246 | guido.van.rossum | 2008-01-24 18:58:05 +0100 (Thu, 24 Jan 2008) | 2 lines
Fix test67.py from issue #1303614.
........
r60248 | raymond.hettinger | 2008-01-24 19:05:54 +0100 (Thu, 24 Jan 2008) | 1 line
Clean-up and speed-up code by accessing numerator/denominator directly. There's no reason to enforce readonliness
........
r60249 | raymond.hettinger | 2008-01-24 19:12:23 +0100 (Thu, 24 Jan 2008) | 1 line
Revert 60189 and restore performance.
........
r60250 | guido.van.rossum | 2008-01-24 19:21:02 +0100 (Thu, 24 Jan 2008) | 5 lines
News about recently fixed crashers:
- A few crashers fixed: weakref_in_del.py (issue #1377858);
loosing_dict_ref.py (issue #1303614, test67.py);
borrowed_ref_[34].py (not in tracker).
........
r60252 | thomas.heller | 2008-01-24 19:36:27 +0100 (Thu, 24 Jan 2008) | 7 lines
Use a PyDictObject again for the array type cache; retrieving items
from the WeakValueDictionary was slower by nearly a factor of 3.
To avoid leaks, weakref proxies for the array types are put into the
cache dict, with weakref callbacks that removes the entries when the
type goes away.
........
r60253 | thomas.heller | 2008-01-24 19:54:12 +0100 (Thu, 24 Jan 2008) | 2 lines
Replace Py_BuildValue with PyTuple_Pack because it is faster.
Also add a missing DECREF.
........
r60254 | raymond.hettinger | 2008-01-24 20:05:29 +0100 (Thu, 24 Jan 2008) | 1 line
Add support for trunc().
........
r60255 | thomas.heller | 2008-01-24 20:15:02 +0100 (Thu, 24 Jan 2008) | 5 lines
Invert the checks in get_[u]long and get_[u]longlong. The intent was
to not accept float types; the result was that integer-like objects
were not accepted.
Ported from release25-maint.
........
r60256 | raymond.hettinger | 2008-01-24 20:30:19 +0100 (Thu, 24 Jan 2008) | 1 line
Add support for int(r) just like the other numeric classes.
........
r60263 | raymond.hettinger | 2008-01-24 22:23:58 +0100 (Thu, 24 Jan 2008) | 1 line
Expand tests to include nested graph structures.
........
r60264 | raymond.hettinger | 2008-01-24 22:47:56 +0100 (Thu, 24 Jan 2008) | 1 line
Shorter pprint's for empty sets and frozensets. Fix indentation of frozensets. Add tests including two complex data structures.
........
r60265 | amaury.forgeotdarc | 2008-01-24 23:51:18 +0100 (Thu, 24 Jan 2008) | 14 lines
#1920: when considering a block starting by "while 0", the compiler optimized the
whole construct away, even when an 'else' clause is present::
while 0:
print("no")
else:
print("yes")
did not generate any code at all.
Now the compiler emits the 'else' block, like it already does for 'if' statements.
Will backport.
........
r60266 | amaury.forgeotdarc | 2008-01-24 23:59:25 +0100 (Thu, 24 Jan 2008) | 2 lines
News entry for r60265 (Issue 1920).
........
r60269 | raymond.hettinger | 2008-01-25 00:50:26 +0100 (Fri, 25 Jan 2008) | 1 line
More code cleanup. Remove unnecessary indirection to useless class methods.
........
r60270 | raymond.hettinger | 2008-01-25 01:21:54 +0100 (Fri, 25 Jan 2008) | 1 line
Add support for copy, deepcopy, and pickle.
........
r60271 | raymond.hettinger | 2008-01-25 01:33:45 +0100 (Fri, 25 Jan 2008) | 1 line
Mark todos and review comments.
........
r60272 | raymond.hettinger | 2008-01-25 02:13:12 +0100 (Fri, 25 Jan 2008) | 1 line
Add one other review comment.
........
r60273 | raymond.hettinger | 2008-01-25 02:23:38 +0100 (Fri, 25 Jan 2008) | 1 line
Fix-up signature for approximation.
........
r60274 | raymond.hettinger | 2008-01-25 02:46:33 +0100 (Fri, 25 Jan 2008) | 1 line
More design notes
........
r60276 | neal.norwitz | 2008-01-25 07:37:23 +0100 (Fri, 25 Jan 2008) | 6 lines
Make the test more robust by trying to reconnect up to 3 times
in case there were transient failures. This will hopefully silence
the buildbots for this test. As we find other tests that have a problem,
we can fix with a similar strategy assuming it is successful. It worked
on my box in a loop for 10+ runs where it would have an exception otherwise.
........
r60277 | neal.norwitz | 2008-01-25 09:04:16 +0100 (Fri, 25 Jan 2008) | 4 lines
Add prototypes to get the mathmodule.c to compile on OSF1 5.1 (Tru64)
and eliminate a compiler warning in floatobject.c. There might be
a better way to go about this, but it should be good enough for now.
........
2008-01-25 07:23:10 -04:00
|
|
|
Py_DECREF(dict);
|
2001-08-02 01:15:00 -03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2001-12-04 11:54:53 -04:00
|
|
|
if (f != NULL) {
|
2007-12-18 22:45:37 -04:00
|
|
|
res = f(descr, obj, (PyObject *)Py_TYPE(obj));
|
2003-08-15 10:07:47 -03:00
|
|
|
Py_DECREF(descr);
|
2001-12-04 11:54:53 -04:00
|
|
|
goto done;
|
|
|
|
}
|
2001-08-02 01:15:00 -03:00
|
|
|
|
|
|
|
if (descr != NULL) {
|
2001-12-04 11:54:53 -04:00
|
|
|
res = descr;
|
2003-08-15 10:07:47 -03:00
|
|
|
/* descr was already increfed above */
|
2001-12-04 11:54:53 -04:00
|
|
|
goto done;
|
2001-08-02 01:15:00 -03:00
|
|
|
}
|
|
|
|
|
|
|
|
PyErr_Format(PyExc_AttributeError,
|
|
|
|
"'%.50s' object has no attribute '%.400s'",
|
2008-08-07 15:54:33 -03:00
|
|
|
tp->tp_name, _PyUnicode_AsString(name));
|
2001-12-04 11:54:53 -04:00
|
|
|
done:
|
|
|
|
Py_DECREF(name);
|
|
|
|
return res;
|
2001-08-02 01:15:00 -03:00
|
|
|
}
|
|
|
|
|
|
|
|
int
|
|
|
|
PyObject_GenericSetAttr(PyObject *obj, PyObject *name, PyObject *value)
|
|
|
|
{
|
2007-12-18 22:45:37 -04:00
|
|
|
PyTypeObject *tp = Py_TYPE(obj);
|
2001-08-02 01:15:00 -03:00
|
|
|
PyObject *descr;
|
|
|
|
descrsetfunc f;
|
|
|
|
PyObject **dictptr;
|
2001-12-04 11:54:53 -04:00
|
|
|
int res = -1;
|
|
|
|
|
2007-06-10 06:51:05 -03:00
|
|
|
if (!PyUnicode_Check(name)){
|
|
|
|
PyErr_Format(PyExc_TypeError,
|
|
|
|
"attribute name must be string, not '%.200s'",
|
|
|
|
name->ob_type->tp_name);
|
|
|
|
return -1;
|
2001-12-04 11:54:53 -04:00
|
|
|
}
|
|
|
|
else
|
|
|
|
Py_INCREF(name);
|
2001-08-02 01:15:00 -03:00
|
|
|
|
|
|
|
if (tp->tp_dict == NULL) {
|
2001-08-07 14:24:28 -03:00
|
|
|
if (PyType_Ready(tp) < 0)
|
2001-12-04 11:54:53 -04:00
|
|
|
goto done;
|
2001-08-02 01:15:00 -03:00
|
|
|
}
|
|
|
|
|
|
|
|
descr = _PyType_Lookup(tp, name);
|
|
|
|
f = NULL;
|
2006-07-27 18:53:35 -03:00
|
|
|
if (descr != NULL) {
|
2001-08-02 01:15:00 -03:00
|
|
|
f = descr->ob_type->tp_descr_set;
|
2001-12-04 11:54:53 -04:00
|
|
|
if (f != NULL && PyDescr_IsData(descr)) {
|
|
|
|
res = f(descr, obj, value);
|
|
|
|
goto done;
|
|
|
|
}
|
2001-08-02 01:15:00 -03:00
|
|
|
}
|
|
|
|
|
|
|
|
dictptr = _PyObject_GetDictPtr(obj);
|
|
|
|
if (dictptr != NULL) {
|
|
|
|
PyObject *dict = *dictptr;
|
|
|
|
if (dict == NULL && value != NULL) {
|
|
|
|
dict = PyDict_New();
|
|
|
|
if (dict == NULL)
|
2001-12-04 11:54:53 -04:00
|
|
|
goto done;
|
2001-08-02 01:15:00 -03:00
|
|
|
*dictptr = dict;
|
|
|
|
}
|
|
|
|
if (dict != NULL) {
|
Merged revisions 60245-60277 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r60246 | guido.van.rossum | 2008-01-24 18:58:05 +0100 (Thu, 24 Jan 2008) | 2 lines
Fix test67.py from issue #1303614.
........
r60248 | raymond.hettinger | 2008-01-24 19:05:54 +0100 (Thu, 24 Jan 2008) | 1 line
Clean-up and speed-up code by accessing numerator/denominator directly. There's no reason to enforce readonliness
........
r60249 | raymond.hettinger | 2008-01-24 19:12:23 +0100 (Thu, 24 Jan 2008) | 1 line
Revert 60189 and restore performance.
........
r60250 | guido.van.rossum | 2008-01-24 19:21:02 +0100 (Thu, 24 Jan 2008) | 5 lines
News about recently fixed crashers:
- A few crashers fixed: weakref_in_del.py (issue #1377858);
loosing_dict_ref.py (issue #1303614, test67.py);
borrowed_ref_[34].py (not in tracker).
........
r60252 | thomas.heller | 2008-01-24 19:36:27 +0100 (Thu, 24 Jan 2008) | 7 lines
Use a PyDictObject again for the array type cache; retrieving items
from the WeakValueDictionary was slower by nearly a factor of 3.
To avoid leaks, weakref proxies for the array types are put into the
cache dict, with weakref callbacks that removes the entries when the
type goes away.
........
r60253 | thomas.heller | 2008-01-24 19:54:12 +0100 (Thu, 24 Jan 2008) | 2 lines
Replace Py_BuildValue with PyTuple_Pack because it is faster.
Also add a missing DECREF.
........
r60254 | raymond.hettinger | 2008-01-24 20:05:29 +0100 (Thu, 24 Jan 2008) | 1 line
Add support for trunc().
........
r60255 | thomas.heller | 2008-01-24 20:15:02 +0100 (Thu, 24 Jan 2008) | 5 lines
Invert the checks in get_[u]long and get_[u]longlong. The intent was
to not accept float types; the result was that integer-like objects
were not accepted.
Ported from release25-maint.
........
r60256 | raymond.hettinger | 2008-01-24 20:30:19 +0100 (Thu, 24 Jan 2008) | 1 line
Add support for int(r) just like the other numeric classes.
........
r60263 | raymond.hettinger | 2008-01-24 22:23:58 +0100 (Thu, 24 Jan 2008) | 1 line
Expand tests to include nested graph structures.
........
r60264 | raymond.hettinger | 2008-01-24 22:47:56 +0100 (Thu, 24 Jan 2008) | 1 line
Shorter pprint's for empty sets and frozensets. Fix indentation of frozensets. Add tests including two complex data structures.
........
r60265 | amaury.forgeotdarc | 2008-01-24 23:51:18 +0100 (Thu, 24 Jan 2008) | 14 lines
#1920: when considering a block starting by "while 0", the compiler optimized the
whole construct away, even when an 'else' clause is present::
while 0:
print("no")
else:
print("yes")
did not generate any code at all.
Now the compiler emits the 'else' block, like it already does for 'if' statements.
Will backport.
........
r60266 | amaury.forgeotdarc | 2008-01-24 23:59:25 +0100 (Thu, 24 Jan 2008) | 2 lines
News entry for r60265 (Issue 1920).
........
r60269 | raymond.hettinger | 2008-01-25 00:50:26 +0100 (Fri, 25 Jan 2008) | 1 line
More code cleanup. Remove unnecessary indirection to useless class methods.
........
r60270 | raymond.hettinger | 2008-01-25 01:21:54 +0100 (Fri, 25 Jan 2008) | 1 line
Add support for copy, deepcopy, and pickle.
........
r60271 | raymond.hettinger | 2008-01-25 01:33:45 +0100 (Fri, 25 Jan 2008) | 1 line
Mark todos and review comments.
........
r60272 | raymond.hettinger | 2008-01-25 02:13:12 +0100 (Fri, 25 Jan 2008) | 1 line
Add one other review comment.
........
r60273 | raymond.hettinger | 2008-01-25 02:23:38 +0100 (Fri, 25 Jan 2008) | 1 line
Fix-up signature for approximation.
........
r60274 | raymond.hettinger | 2008-01-25 02:46:33 +0100 (Fri, 25 Jan 2008) | 1 line
More design notes
........
r60276 | neal.norwitz | 2008-01-25 07:37:23 +0100 (Fri, 25 Jan 2008) | 6 lines
Make the test more robust by trying to reconnect up to 3 times
in case there were transient failures. This will hopefully silence
the buildbots for this test. As we find other tests that have a problem,
we can fix with a similar strategy assuming it is successful. It worked
on my box in a loop for 10+ runs where it would have an exception otherwise.
........
r60277 | neal.norwitz | 2008-01-25 09:04:16 +0100 (Fri, 25 Jan 2008) | 4 lines
Add prototypes to get the mathmodule.c to compile on OSF1 5.1 (Tru64)
and eliminate a compiler warning in floatobject.c. There might be
a better way to go about this, but it should be good enough for now.
........
2008-01-25 07:23:10 -04:00
|
|
|
Py_INCREF(dict);
|
2001-08-02 01:15:00 -03:00
|
|
|
if (value == NULL)
|
|
|
|
res = PyDict_DelItem(dict, name);
|
|
|
|
else
|
|
|
|
res = PyDict_SetItem(dict, name, value);
|
|
|
|
if (res < 0 && PyErr_ExceptionMatches(PyExc_KeyError))
|
|
|
|
PyErr_SetObject(PyExc_AttributeError, name);
|
Merged revisions 60245-60277 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r60246 | guido.van.rossum | 2008-01-24 18:58:05 +0100 (Thu, 24 Jan 2008) | 2 lines
Fix test67.py from issue #1303614.
........
r60248 | raymond.hettinger | 2008-01-24 19:05:54 +0100 (Thu, 24 Jan 2008) | 1 line
Clean-up and speed-up code by accessing numerator/denominator directly. There's no reason to enforce readonliness
........
r60249 | raymond.hettinger | 2008-01-24 19:12:23 +0100 (Thu, 24 Jan 2008) | 1 line
Revert 60189 and restore performance.
........
r60250 | guido.van.rossum | 2008-01-24 19:21:02 +0100 (Thu, 24 Jan 2008) | 5 lines
News about recently fixed crashers:
- A few crashers fixed: weakref_in_del.py (issue #1377858);
loosing_dict_ref.py (issue #1303614, test67.py);
borrowed_ref_[34].py (not in tracker).
........
r60252 | thomas.heller | 2008-01-24 19:36:27 +0100 (Thu, 24 Jan 2008) | 7 lines
Use a PyDictObject again for the array type cache; retrieving items
from the WeakValueDictionary was slower by nearly a factor of 3.
To avoid leaks, weakref proxies for the array types are put into the
cache dict, with weakref callbacks that removes the entries when the
type goes away.
........
r60253 | thomas.heller | 2008-01-24 19:54:12 +0100 (Thu, 24 Jan 2008) | 2 lines
Replace Py_BuildValue with PyTuple_Pack because it is faster.
Also add a missing DECREF.
........
r60254 | raymond.hettinger | 2008-01-24 20:05:29 +0100 (Thu, 24 Jan 2008) | 1 line
Add support for trunc().
........
r60255 | thomas.heller | 2008-01-24 20:15:02 +0100 (Thu, 24 Jan 2008) | 5 lines
Invert the checks in get_[u]long and get_[u]longlong. The intent was
to not accept float types; the result was that integer-like objects
were not accepted.
Ported from release25-maint.
........
r60256 | raymond.hettinger | 2008-01-24 20:30:19 +0100 (Thu, 24 Jan 2008) | 1 line
Add support for int(r) just like the other numeric classes.
........
r60263 | raymond.hettinger | 2008-01-24 22:23:58 +0100 (Thu, 24 Jan 2008) | 1 line
Expand tests to include nested graph structures.
........
r60264 | raymond.hettinger | 2008-01-24 22:47:56 +0100 (Thu, 24 Jan 2008) | 1 line
Shorter pprint's for empty sets and frozensets. Fix indentation of frozensets. Add tests including two complex data structures.
........
r60265 | amaury.forgeotdarc | 2008-01-24 23:51:18 +0100 (Thu, 24 Jan 2008) | 14 lines
#1920: when considering a block starting by "while 0", the compiler optimized the
whole construct away, even when an 'else' clause is present::
while 0:
print("no")
else:
print("yes")
did not generate any code at all.
Now the compiler emits the 'else' block, like it already does for 'if' statements.
Will backport.
........
r60266 | amaury.forgeotdarc | 2008-01-24 23:59:25 +0100 (Thu, 24 Jan 2008) | 2 lines
News entry for r60265 (Issue 1920).
........
r60269 | raymond.hettinger | 2008-01-25 00:50:26 +0100 (Fri, 25 Jan 2008) | 1 line
More code cleanup. Remove unnecessary indirection to useless class methods.
........
r60270 | raymond.hettinger | 2008-01-25 01:21:54 +0100 (Fri, 25 Jan 2008) | 1 line
Add support for copy, deepcopy, and pickle.
........
r60271 | raymond.hettinger | 2008-01-25 01:33:45 +0100 (Fri, 25 Jan 2008) | 1 line
Mark todos and review comments.
........
r60272 | raymond.hettinger | 2008-01-25 02:13:12 +0100 (Fri, 25 Jan 2008) | 1 line
Add one other review comment.
........
r60273 | raymond.hettinger | 2008-01-25 02:23:38 +0100 (Fri, 25 Jan 2008) | 1 line
Fix-up signature for approximation.
........
r60274 | raymond.hettinger | 2008-01-25 02:46:33 +0100 (Fri, 25 Jan 2008) | 1 line
More design notes
........
r60276 | neal.norwitz | 2008-01-25 07:37:23 +0100 (Fri, 25 Jan 2008) | 6 lines
Make the test more robust by trying to reconnect up to 3 times
in case there were transient failures. This will hopefully silence
the buildbots for this test. As we find other tests that have a problem,
we can fix with a similar strategy assuming it is successful. It worked
on my box in a loop for 10+ runs where it would have an exception otherwise.
........
r60277 | neal.norwitz | 2008-01-25 09:04:16 +0100 (Fri, 25 Jan 2008) | 4 lines
Add prototypes to get the mathmodule.c to compile on OSF1 5.1 (Tru64)
and eliminate a compiler warning in floatobject.c. There might be
a better way to go about this, but it should be good enough for now.
........
2008-01-25 07:23:10 -04:00
|
|
|
Py_DECREF(dict);
|
2001-12-04 11:54:53 -04:00
|
|
|
goto done;
|
2001-08-02 01:15:00 -03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2001-12-04 11:54:53 -04:00
|
|
|
if (f != NULL) {
|
|
|
|
res = f(descr, obj, value);
|
|
|
|
goto done;
|
|
|
|
}
|
2001-08-02 01:15:00 -03:00
|
|
|
|
|
|
|
if (descr == NULL) {
|
|
|
|
PyErr_Format(PyExc_AttributeError,
|
2007-06-11 12:37:20 -03:00
|
|
|
"'%.100s' object has no attribute '%U'",
|
|
|
|
tp->tp_name, name);
|
2001-12-04 11:54:53 -04:00
|
|
|
goto done;
|
2001-08-02 01:15:00 -03:00
|
|
|
}
|
|
|
|
|
|
|
|
PyErr_Format(PyExc_AttributeError,
|
2007-06-11 12:37:20 -03:00
|
|
|
"'%.50s' object attribute '%U' is read-only",
|
|
|
|
tp->tp_name, name);
|
2001-12-04 11:54:53 -04:00
|
|
|
done:
|
|
|
|
Py_DECREF(name);
|
|
|
|
return res;
|
1997-05-20 15:34:44 -03:00
|
|
|
}
|
|
|
|
|
1993-05-12 05:24:20 -03:00
|
|
|
/* Test a value used as condition, e.g., in a for or if statement.
|
|
|
|
Return -1 if an error occurred */
|
|
|
|
|
|
|
|
int
|
2000-07-09 12:48:49 -03:00
|
|
|
PyObject_IsTrue(PyObject *v)
|
1993-05-12 05:24:20 -03:00
|
|
|
{
|
2006-02-15 13:27:45 -04:00
|
|
|
Py_ssize_t res;
|
2002-08-24 03:31:34 -03:00
|
|
|
if (v == Py_True)
|
|
|
|
return 1;
|
|
|
|
if (v == Py_False)
|
|
|
|
return 0;
|
1997-05-02 00:12:38 -03:00
|
|
|
if (v == Py_None)
|
2002-06-13 18:32:44 -03:00
|
|
|
return 0;
|
1998-05-21 21:53:24 -03:00
|
|
|
else if (v->ob_type->tp_as_number != NULL &&
|
2006-11-28 15:15:13 -04:00
|
|
|
v->ob_type->tp_as_number->nb_bool != NULL)
|
|
|
|
res = (*v->ob_type->tp_as_number->nb_bool)(v);
|
1998-05-21 21:53:24 -03:00
|
|
|
else if (v->ob_type->tp_as_mapping != NULL &&
|
|
|
|
v->ob_type->tp_as_mapping->mp_length != NULL)
|
1993-05-12 05:24:20 -03:00
|
|
|
res = (*v->ob_type->tp_as_mapping->mp_length)(v);
|
1998-05-21 21:53:24 -03:00
|
|
|
else if (v->ob_type->tp_as_sequence != NULL &&
|
|
|
|
v->ob_type->tp_as_sequence->sq_length != NULL)
|
1993-05-12 05:24:20 -03:00
|
|
|
res = (*v->ob_type->tp_as_sequence->sq_length)(v);
|
|
|
|
else
|
2002-06-13 18:32:44 -03:00
|
|
|
return 1;
|
2006-02-15 13:27:45 -04:00
|
|
|
/* if it is negative, it should be either -1 or -2 */
|
|
|
|
return (res > 0) ? 1 : Py_SAFE_DOWNCAST(res, Py_ssize_t, int);
|
1990-12-20 11:06:42 -04:00
|
|
|
}
|
|
|
|
|
2002-07-07 02:13:56 -03:00
|
|
|
/* equivalent of 'not v'
|
1998-04-09 14:53:59 -03:00
|
|
|
Return -1 if an error occurred */
|
|
|
|
|
|
|
|
int
|
2000-07-09 12:48:49 -03:00
|
|
|
PyObject_Not(PyObject *v)
|
1998-04-09 14:53:59 -03:00
|
|
|
{
|
|
|
|
int res;
|
|
|
|
res = PyObject_IsTrue(v);
|
|
|
|
if (res < 0)
|
|
|
|
return res;
|
|
|
|
return res == 0;
|
|
|
|
}
|
|
|
|
|
1995-01-25 20:38:22 -04:00
|
|
|
/* Test whether an object can be called */
|
|
|
|
|
|
|
|
int
|
2000-07-09 12:48:49 -03:00
|
|
|
PyCallable_Check(PyObject *x)
|
1995-01-25 20:38:22 -04:00
|
|
|
{
|
|
|
|
if (x == NULL)
|
|
|
|
return 0;
|
2006-08-17 02:42:55 -03:00
|
|
|
return x->ob_type->tp_call != NULL;
|
1995-01-25 20:38:22 -04:00
|
|
|
}
|
|
|
|
|
2007-03-10 18:13:27 -04:00
|
|
|
/* ------------------------- PyObject_Dir() helpers ------------------------- */
|
|
|
|
|
2001-09-04 19:08:56 -03:00
|
|
|
/* Helper for PyObject_Dir.
|
|
|
|
Merge the __dict__ of aclass into dict, and recursively also all
|
|
|
|
the __dict__s of aclass's base classes. The order of merging isn't
|
|
|
|
defined, as it's expected that only the final set of dict keys is
|
|
|
|
interesting.
|
|
|
|
Return 0 on success, -1 on error.
|
|
|
|
*/
|
|
|
|
|
|
|
|
static int
|
|
|
|
merge_class_dict(PyObject* dict, PyObject* aclass)
|
|
|
|
{
|
|
|
|
PyObject *classdict;
|
|
|
|
PyObject *bases;
|
|
|
|
|
|
|
|
assert(PyDict_Check(dict));
|
|
|
|
assert(aclass);
|
|
|
|
|
|
|
|
/* Merge in the type's dict (if any). */
|
|
|
|
classdict = PyObject_GetAttrString(aclass, "__dict__");
|
|
|
|
if (classdict == NULL)
|
|
|
|
PyErr_Clear();
|
|
|
|
else {
|
|
|
|
int status = PyDict_Update(dict, classdict);
|
|
|
|
Py_DECREF(classdict);
|
|
|
|
if (status < 0)
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Recursively merge in the base types' (if any) dicts. */
|
|
|
|
bases = PyObject_GetAttrString(aclass, "__bases__");
|
2001-09-16 17:33:22 -03:00
|
|
|
if (bases == NULL)
|
|
|
|
PyErr_Clear();
|
|
|
|
else {
|
2002-05-13 15:29:46 -03:00
|
|
|
/* We have no guarantee that bases is a real tuple */
|
2006-02-15 13:27:45 -04:00
|
|
|
Py_ssize_t i, n;
|
2002-05-13 15:29:46 -03:00
|
|
|
n = PySequence_Size(bases); /* This better be right */
|
|
|
|
if (n < 0)
|
|
|
|
PyErr_Clear();
|
|
|
|
else {
|
|
|
|
for (i = 0; i < n; i++) {
|
2003-02-05 15:35:19 -04:00
|
|
|
int status;
|
2002-05-13 15:29:46 -03:00
|
|
|
PyObject *base = PySequence_GetItem(bases, i);
|
|
|
|
if (base == NULL) {
|
|
|
|
Py_DECREF(bases);
|
|
|
|
return -1;
|
|
|
|
}
|
2003-02-05 15:35:19 -04:00
|
|
|
status = merge_class_dict(dict, base);
|
|
|
|
Py_DECREF(base);
|
|
|
|
if (status < 0) {
|
2002-05-13 15:29:46 -03:00
|
|
|
Py_DECREF(bases);
|
|
|
|
return -1;
|
|
|
|
}
|
2001-09-04 19:08:56 -03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
Py_DECREF(bases);
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2007-03-10 18:13:27 -04:00
|
|
|
/* Helper for PyObject_Dir without arguments: returns the local scope. */
|
|
|
|
static PyObject *
|
2007-04-12 22:39:34 -03:00
|
|
|
_dir_locals(void)
|
2007-03-10 18:13:27 -04:00
|
|
|
{
|
2007-03-12 10:15:14 -03:00
|
|
|
PyObject *names;
|
2007-03-10 18:13:27 -04:00
|
|
|
PyObject *locals = PyEval_GetLocals();
|
2001-09-16 23:38:46 -03:00
|
|
|
|
2007-03-10 18:13:27 -04:00
|
|
|
if (locals == NULL) {
|
|
|
|
PyErr_SetString(PyExc_SystemError, "frame does not exist");
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2007-03-12 10:15:14 -03:00
|
|
|
names = PyMapping_Keys(locals);
|
|
|
|
if (!names)
|
|
|
|
return NULL;
|
|
|
|
if (!PyList_Check(names)) {
|
|
|
|
PyErr_Format(PyExc_TypeError,
|
|
|
|
"dir(): expected keys() of locals to be a list, "
|
2007-12-18 22:45:37 -04:00
|
|
|
"not '%.200s'", Py_TYPE(names)->tp_name);
|
2007-03-12 10:15:14 -03:00
|
|
|
Py_DECREF(names);
|
|
|
|
return NULL;
|
|
|
|
}
|
2007-03-10 18:13:27 -04:00
|
|
|
/* the locals don't need to be DECREF'd */
|
2007-03-12 10:15:14 -03:00
|
|
|
return names;
|
2007-03-10 18:13:27 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/* Helper for PyObject_Dir of type objects: returns __dict__ and __bases__.
|
2007-11-06 17:34:58 -04:00
|
|
|
We deliberately don't suck up its __class__, as methods belonging to the
|
|
|
|
metaclass would probably be more confusing than helpful.
|
2007-03-10 18:13:27 -04:00
|
|
|
*/
|
2007-11-06 17:34:58 -04:00
|
|
|
static PyObject *
|
2007-03-10 18:13:27 -04:00
|
|
|
_specialized_dir_type(PyObject *obj)
|
2001-09-16 23:38:46 -03:00
|
|
|
{
|
2007-03-10 18:13:27 -04:00
|
|
|
PyObject *result = NULL;
|
|
|
|
PyObject *dict = PyDict_New();
|
2001-09-16 23:38:46 -03:00
|
|
|
|
2007-03-10 18:13:27 -04:00
|
|
|
if (dict != NULL && merge_class_dict(dict, obj) == 0)
|
|
|
|
result = PyDict_Keys(dict);
|
2001-09-16 23:38:46 -03:00
|
|
|
|
2007-03-10 18:13:27 -04:00
|
|
|
Py_XDECREF(dict);
|
|
|
|
return result;
|
|
|
|
}
|
2001-09-16 23:38:46 -03:00
|
|
|
|
2007-03-10 18:13:27 -04:00
|
|
|
/* Helper for PyObject_Dir of module objects: returns the module's __dict__. */
|
|
|
|
static PyObject *
|
|
|
|
_specialized_dir_module(PyObject *obj)
|
|
|
|
{
|
|
|
|
PyObject *result = NULL;
|
|
|
|
PyObject *dict = PyObject_GetAttrString(obj, "__dict__");
|
|
|
|
|
|
|
|
if (dict != NULL) {
|
|
|
|
if (PyDict_Check(dict))
|
|
|
|
result = PyDict_Keys(dict);
|
|
|
|
else {
|
|
|
|
PyErr_Format(PyExc_TypeError,
|
|
|
|
"%.200s.__dict__ is not a dictionary",
|
|
|
|
PyModule_GetName(obj));
|
2001-09-16 23:38:46 -03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2007-03-10 18:13:27 -04:00
|
|
|
Py_XDECREF(dict);
|
2001-09-16 23:38:46 -03:00
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
2007-03-10 18:13:27 -04:00
|
|
|
/* Helper for PyObject_Dir of generic objects: returns __dict__, __class__,
|
|
|
|
and recursively up the __class__.__bases__ chain.
|
|
|
|
*/
|
|
|
|
static PyObject *
|
|
|
|
_generic_dir(PyObject *obj)
|
2001-09-04 19:08:56 -03:00
|
|
|
{
|
2007-03-10 18:13:27 -04:00
|
|
|
PyObject *result = NULL;
|
|
|
|
PyObject *dict = NULL;
|
|
|
|
PyObject *itsclass = NULL;
|
2007-11-06 17:34:58 -04:00
|
|
|
|
2007-03-10 18:13:27 -04:00
|
|
|
/* Get __dict__ (which may or may not be a real dict...) */
|
|
|
|
dict = PyObject_GetAttrString(obj, "__dict__");
|
|
|
|
if (dict == NULL) {
|
|
|
|
PyErr_Clear();
|
|
|
|
dict = PyDict_New();
|
2001-09-04 19:08:56 -03:00
|
|
|
}
|
2007-03-10 18:13:27 -04:00
|
|
|
else if (!PyDict_Check(dict)) {
|
|
|
|
Py_DECREF(dict);
|
|
|
|
dict = PyDict_New();
|
2001-09-04 19:08:56 -03:00
|
|
|
}
|
2007-03-10 18:13:27 -04:00
|
|
|
else {
|
|
|
|
/* Copy __dict__ to avoid mutating it. */
|
|
|
|
PyObject *temp = PyDict_Copy(dict);
|
|
|
|
Py_DECREF(dict);
|
|
|
|
dict = temp;
|
2001-09-04 19:08:56 -03:00
|
|
|
}
|
|
|
|
|
2007-03-10 18:13:27 -04:00
|
|
|
if (dict == NULL)
|
|
|
|
goto error;
|
|
|
|
|
|
|
|
/* Merge in attrs reachable from its class. */
|
|
|
|
itsclass = PyObject_GetAttrString(obj, "__class__");
|
|
|
|
if (itsclass == NULL)
|
|
|
|
/* XXX(tomer): Perhaps fall back to obj->ob_type if no
|
|
|
|
__class__ exists? */
|
|
|
|
PyErr_Clear();
|
2001-09-04 19:08:56 -03:00
|
|
|
else {
|
2007-03-10 18:13:27 -04:00
|
|
|
if (merge_class_dict(dict, itsclass) != 0)
|
2001-09-04 19:08:56 -03:00
|
|
|
goto error;
|
2007-03-10 18:13:27 -04:00
|
|
|
}
|
2001-09-04 19:08:56 -03:00
|
|
|
|
2007-03-10 18:13:27 -04:00
|
|
|
result = PyDict_Keys(dict);
|
|
|
|
/* fall through */
|
|
|
|
error:
|
|
|
|
Py_XDECREF(itsclass);
|
|
|
|
Py_XDECREF(dict);
|
|
|
|
return result;
|
|
|
|
}
|
2001-09-16 23:38:46 -03:00
|
|
|
|
2007-03-10 18:13:27 -04:00
|
|
|
/* Helper for PyObject_Dir: object introspection.
|
|
|
|
This calls one of the above specialized versions if no __dir__ method
|
|
|
|
exists. */
|
|
|
|
static PyObject *
|
|
|
|
_dir_object(PyObject *obj)
|
|
|
|
{
|
|
|
|
PyObject * result = NULL;
|
|
|
|
PyObject * dirfunc = PyObject_GetAttrString((PyObject*)obj->ob_type,
|
|
|
|
"__dir__");
|
2001-09-04 19:08:56 -03:00
|
|
|
|
2007-03-10 18:13:27 -04:00
|
|
|
assert(obj);
|
|
|
|
if (dirfunc == NULL) {
|
|
|
|
/* use default implementation */
|
|
|
|
PyErr_Clear();
|
|
|
|
if (PyModule_Check(obj))
|
|
|
|
result = _specialized_dir_module(obj);
|
|
|
|
else if (PyType_Check(obj))
|
|
|
|
result = _specialized_dir_type(obj);
|
|
|
|
else
|
|
|
|
result = _generic_dir(obj);
|
2001-09-04 19:08:56 -03:00
|
|
|
}
|
2007-03-10 18:13:27 -04:00
|
|
|
else {
|
|
|
|
/* use __dir__ */
|
|
|
|
result = PyObject_CallFunctionObjArgs(dirfunc, obj, NULL);
|
|
|
|
Py_DECREF(dirfunc);
|
|
|
|
if (result == NULL)
|
|
|
|
return NULL;
|
2001-09-04 19:08:56 -03:00
|
|
|
|
2007-03-10 18:13:27 -04:00
|
|
|
/* result must be a list */
|
|
|
|
/* XXX(gbrandl): could also check if all items are strings */
|
|
|
|
if (!PyList_Check(result)) {
|
|
|
|
PyErr_Format(PyExc_TypeError,
|
|
|
|
"__dir__() must return a list, not %.200s",
|
2007-12-18 22:45:37 -04:00
|
|
|
Py_TYPE(result)->tp_name);
|
2007-03-10 18:13:27 -04:00
|
|
|
Py_DECREF(result);
|
|
|
|
result = NULL;
|
|
|
|
}
|
2004-08-07 01:55:30 -03:00
|
|
|
}
|
2007-03-10 18:13:27 -04:00
|
|
|
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Implementation of dir() -- if obj is NULL, returns the names in the current
|
|
|
|
(local) scope. Otherwise, performs introspection of the object: returns a
|
|
|
|
sorted list of attribute names (supposedly) accessible from the object
|
|
|
|
*/
|
|
|
|
PyObject *
|
|
|
|
PyObject_Dir(PyObject *obj)
|
|
|
|
{
|
|
|
|
PyObject * result;
|
|
|
|
|
|
|
|
if (obj == NULL)
|
|
|
|
/* no object -- introspect the locals */
|
|
|
|
result = _dir_locals();
|
2001-09-04 19:08:56 -03:00
|
|
|
else
|
2007-03-10 18:13:27 -04:00
|
|
|
/* object -- introspect the object */
|
|
|
|
result = _dir_object(obj);
|
2001-09-04 19:08:56 -03:00
|
|
|
|
2007-03-10 18:13:27 -04:00
|
|
|
assert(result == NULL || PyList_Check(result));
|
|
|
|
|
|
|
|
if (result != NULL && PyList_Sort(result) != 0) {
|
|
|
|
/* sorting the list failed */
|
|
|
|
Py_DECREF(result);
|
|
|
|
result = NULL;
|
|
|
|
}
|
2007-11-06 17:34:58 -04:00
|
|
|
|
2001-09-04 19:08:56 -03:00
|
|
|
return result;
|
|
|
|
}
|
1995-01-25 20:38:22 -04:00
|
|
|
|
1990-10-14 09:07:46 -03:00
|
|
|
/*
|
|
|
|
NoObject is usable as a non-NULL undefined value, used by the macro None.
|
|
|
|
There is (and should be!) no way to create other objects of this type,
|
1990-12-20 11:06:42 -04:00
|
|
|
so there is exactly one (which is indestructible, by the way).
|
2001-08-16 05:17:26 -03:00
|
|
|
(XXX This type and the type of NotImplemented below should be unified.)
|
1990-10-14 09:07:46 -03:00
|
|
|
*/
|
|
|
|
|
1992-03-27 13:26:13 -04:00
|
|
|
/* ARGSUSED */
|
1997-05-02 00:12:38 -03:00
|
|
|
static PyObject *
|
2000-07-09 12:48:49 -03:00
|
|
|
none_repr(PyObject *op)
|
1990-12-20 11:06:42 -04:00
|
|
|
{
|
2007-05-18 14:15:44 -03:00
|
|
|
return PyUnicode_FromString("None");
|
1990-10-14 09:07:46 -03:00
|
|
|
}
|
|
|
|
|
2001-01-23 12:24:35 -04:00
|
|
|
/* ARGUSED */
|
|
|
|
static void
|
2002-07-07 02:13:56 -03:00
|
|
|
none_dealloc(PyObject* ignore)
|
2001-01-23 12:24:35 -04:00
|
|
|
{
|
|
|
|
/* This should never get called, but we also don't want to SEGV if
|
|
|
|
* we accidently decref None out of existance.
|
|
|
|
*/
|
2002-08-07 13:21:51 -03:00
|
|
|
Py_FatalError("deallocating None");
|
2001-01-23 12:24:35 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2001-08-16 05:17:26 -03:00
|
|
|
static PyTypeObject PyNone_Type = {
|
Merged revisions 56467-56482 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/p3yk
................
r56477 | martin.v.loewis | 2007-07-21 09:04:38 +0200 (Sa, 21 Jul 2007) | 11 lines
Merged revisions 56466-56476 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r56476 | martin.v.loewis | 2007-07-21 08:55:02 +0200 (Sa, 21 Jul 2007) | 4 lines
PEP 3123: Provide forward compatibility with Python 3.0, while keeping
backwards compatibility. Add Py_Refcnt, Py_Type, Py_Size, and
PyVarObject_HEAD_INIT.
........
................
r56478 | martin.v.loewis | 2007-07-21 09:47:23 +0200 (Sa, 21 Jul 2007) | 2 lines
PEP 3123: Use proper C inheritance for PyObject.
................
r56479 | martin.v.loewis | 2007-07-21 10:06:55 +0200 (Sa, 21 Jul 2007) | 3 lines
Add longintrepr.h to Python.h, so that the compiler can
see that PyFalse is really some kind of PyObject*.
................
r56480 | martin.v.loewis | 2007-07-21 10:47:18 +0200 (Sa, 21 Jul 2007) | 2 lines
Qualify SHIFT, MASK, BASE.
................
r56482 | martin.v.loewis | 2007-07-21 19:10:57 +0200 (Sa, 21 Jul 2007) | 2 lines
Correctly refer to _ob_next.
................
2007-07-21 14:22:18 -03:00
|
|
|
PyVarObject_HEAD_INIT(&PyType_Type, 0)
|
2001-08-16 05:17:26 -03:00
|
|
|
"NoneType",
|
1990-10-14 09:07:46 -03:00
|
|
|
0,
|
|
|
|
0,
|
2006-04-21 07:40:58 -03:00
|
|
|
none_dealloc, /*tp_dealloc*/ /*never called*/
|
1992-09-17 14:54:56 -03:00
|
|
|
0, /*tp_print*/
|
1990-12-20 11:06:42 -04:00
|
|
|
0, /*tp_getattr*/
|
|
|
|
0, /*tp_setattr*/
|
|
|
|
0, /*tp_compare*/
|
2006-04-21 07:40:58 -03:00
|
|
|
none_repr, /*tp_repr*/
|
1990-12-20 11:06:42 -04:00
|
|
|
0, /*tp_as_number*/
|
|
|
|
0, /*tp_as_sequence*/
|
|
|
|
0, /*tp_as_mapping*/
|
1993-03-29 06:43:31 -04:00
|
|
|
0, /*tp_hash */
|
1990-10-14 09:07:46 -03:00
|
|
|
};
|
|
|
|
|
1997-05-02 00:12:38 -03:00
|
|
|
PyObject _Py_NoneStruct = {
|
Merged revisions 56467-56482 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/p3yk
................
r56477 | martin.v.loewis | 2007-07-21 09:04:38 +0200 (Sa, 21 Jul 2007) | 11 lines
Merged revisions 56466-56476 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r56476 | martin.v.loewis | 2007-07-21 08:55:02 +0200 (Sa, 21 Jul 2007) | 4 lines
PEP 3123: Provide forward compatibility with Python 3.0, while keeping
backwards compatibility. Add Py_Refcnt, Py_Type, Py_Size, and
PyVarObject_HEAD_INIT.
........
................
r56478 | martin.v.loewis | 2007-07-21 09:47:23 +0200 (Sa, 21 Jul 2007) | 2 lines
PEP 3123: Use proper C inheritance for PyObject.
................
r56479 | martin.v.loewis | 2007-07-21 10:06:55 +0200 (Sa, 21 Jul 2007) | 3 lines
Add longintrepr.h to Python.h, so that the compiler can
see that PyFalse is really some kind of PyObject*.
................
r56480 | martin.v.loewis | 2007-07-21 10:47:18 +0200 (Sa, 21 Jul 2007) | 2 lines
Qualify SHIFT, MASK, BASE.
................
r56482 | martin.v.loewis | 2007-07-21 19:10:57 +0200 (Sa, 21 Jul 2007) | 2 lines
Correctly refer to _ob_next.
................
2007-07-21 14:22:18 -03:00
|
|
|
_PyObject_EXTRA_INIT
|
|
|
|
1, &PyNone_Type
|
1990-10-14 09:07:46 -03:00
|
|
|
};
|
|
|
|
|
2001-01-03 21:48:10 -04:00
|
|
|
/* NotImplemented is an object that can be used to signal that an
|
|
|
|
operation is not implemented for the given type combination. */
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
NotImplemented_repr(PyObject *op)
|
|
|
|
{
|
2007-05-18 14:15:44 -03:00
|
|
|
return PyUnicode_FromString("NotImplemented");
|
2001-01-03 21:48:10 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
static PyTypeObject PyNotImplemented_Type = {
|
Merged revisions 56467-56482 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/p3yk
................
r56477 | martin.v.loewis | 2007-07-21 09:04:38 +0200 (Sa, 21 Jul 2007) | 11 lines
Merged revisions 56466-56476 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r56476 | martin.v.loewis | 2007-07-21 08:55:02 +0200 (Sa, 21 Jul 2007) | 4 lines
PEP 3123: Provide forward compatibility with Python 3.0, while keeping
backwards compatibility. Add Py_Refcnt, Py_Type, Py_Size, and
PyVarObject_HEAD_INIT.
........
................
r56478 | martin.v.loewis | 2007-07-21 09:47:23 +0200 (Sa, 21 Jul 2007) | 2 lines
PEP 3123: Use proper C inheritance for PyObject.
................
r56479 | martin.v.loewis | 2007-07-21 10:06:55 +0200 (Sa, 21 Jul 2007) | 3 lines
Add longintrepr.h to Python.h, so that the compiler can
see that PyFalse is really some kind of PyObject*.
................
r56480 | martin.v.loewis | 2007-07-21 10:47:18 +0200 (Sa, 21 Jul 2007) | 2 lines
Qualify SHIFT, MASK, BASE.
................
r56482 | martin.v.loewis | 2007-07-21 19:10:57 +0200 (Sa, 21 Jul 2007) | 2 lines
Correctly refer to _ob_next.
................
2007-07-21 14:22:18 -03:00
|
|
|
PyVarObject_HEAD_INIT(&PyType_Type, 0)
|
2001-08-16 05:17:26 -03:00
|
|
|
"NotImplementedType",
|
2001-01-03 21:48:10 -04:00
|
|
|
0,
|
|
|
|
0,
|
2006-04-21 07:40:58 -03:00
|
|
|
none_dealloc, /*tp_dealloc*/ /*never called*/
|
2001-01-03 21:48:10 -04:00
|
|
|
0, /*tp_print*/
|
|
|
|
0, /*tp_getattr*/
|
|
|
|
0, /*tp_setattr*/
|
|
|
|
0, /*tp_compare*/
|
2006-04-21 07:40:58 -03:00
|
|
|
NotImplemented_repr, /*tp_repr*/
|
2001-01-03 21:48:10 -04:00
|
|
|
0, /*tp_as_number*/
|
|
|
|
0, /*tp_as_sequence*/
|
|
|
|
0, /*tp_as_mapping*/
|
|
|
|
0, /*tp_hash */
|
|
|
|
};
|
|
|
|
|
|
|
|
PyObject _Py_NotImplementedStruct = {
|
Merged revisions 56467-56482 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/p3yk
................
r56477 | martin.v.loewis | 2007-07-21 09:04:38 +0200 (Sa, 21 Jul 2007) | 11 lines
Merged revisions 56466-56476 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r56476 | martin.v.loewis | 2007-07-21 08:55:02 +0200 (Sa, 21 Jul 2007) | 4 lines
PEP 3123: Provide forward compatibility with Python 3.0, while keeping
backwards compatibility. Add Py_Refcnt, Py_Type, Py_Size, and
PyVarObject_HEAD_INIT.
........
................
r56478 | martin.v.loewis | 2007-07-21 09:47:23 +0200 (Sa, 21 Jul 2007) | 2 lines
PEP 3123: Use proper C inheritance for PyObject.
................
r56479 | martin.v.loewis | 2007-07-21 10:06:55 +0200 (Sa, 21 Jul 2007) | 3 lines
Add longintrepr.h to Python.h, so that the compiler can
see that PyFalse is really some kind of PyObject*.
................
r56480 | martin.v.loewis | 2007-07-21 10:47:18 +0200 (Sa, 21 Jul 2007) | 2 lines
Qualify SHIFT, MASK, BASE.
................
r56482 | martin.v.loewis | 2007-07-21 19:10:57 +0200 (Sa, 21 Jul 2007) | 2 lines
Correctly refer to _ob_next.
................
2007-07-21 14:22:18 -03:00
|
|
|
_PyObject_EXTRA_INIT
|
|
|
|
1, &PyNotImplemented_Type
|
2001-01-03 21:48:10 -04:00
|
|
|
};
|
|
|
|
|
2001-08-16 05:17:26 -03:00
|
|
|
void
|
|
|
|
_Py_ReadyTypes(void)
|
|
|
|
{
|
|
|
|
if (PyType_Ready(&PyType_Type) < 0)
|
|
|
|
Py_FatalError("Can't initialize 'type'");
|
|
|
|
|
2004-07-02 15:57:45 -03:00
|
|
|
if (PyType_Ready(&_PyWeakref_RefType) < 0)
|
|
|
|
Py_FatalError("Can't initialize 'weakref'");
|
|
|
|
|
2002-04-03 18:41:51 -04:00
|
|
|
if (PyType_Ready(&PyBool_Type) < 0)
|
|
|
|
Py_FatalError("Can't initialize 'bool'");
|
|
|
|
|
2008-05-26 10:22:05 -03:00
|
|
|
if (PyType_Ready(&PyByteArray_Type) < 0)
|
2006-04-22 20:28:04 -03:00
|
|
|
Py_FatalError("Can't initialize 'bytes'");
|
|
|
|
|
2008-05-26 10:28:38 -03:00
|
|
|
if (PyType_Ready(&PyBytes_Type) < 0)
|
2002-05-24 16:01:59 -03:00
|
|
|
Py_FatalError("Can't initialize 'str'");
|
|
|
|
|
2001-08-16 05:17:26 -03:00
|
|
|
if (PyType_Ready(&PyList_Type) < 0)
|
|
|
|
Py_FatalError("Can't initialize 'list'");
|
|
|
|
|
|
|
|
if (PyType_Ready(&PyNone_Type) < 0)
|
|
|
|
Py_FatalError("Can't initialize type(None)");
|
|
|
|
|
2006-08-17 02:42:55 -03:00
|
|
|
if (PyType_Ready(Py_Ellipsis->ob_type) < 0)
|
|
|
|
Py_FatalError("Can't initialize type(Ellipsis)");
|
|
|
|
|
2001-08-16 05:17:26 -03:00
|
|
|
if (PyType_Ready(&PyNotImplemented_Type) < 0)
|
|
|
|
Py_FatalError("Can't initialize type(NotImplemented)");
|
2006-08-23 21:41:19 -03:00
|
|
|
|
|
|
|
if (PyType_Ready(&PyCode_Type) < 0)
|
|
|
|
Py_FatalError("Can't initialize 'code'");
|
2007-10-30 15:34:07 -03:00
|
|
|
|
|
|
|
if (PyType_Ready(&PyStdPrinter_Type) < 0)
|
|
|
|
Py_FatalError("Can't initialize StdPrinter");
|
2001-08-16 05:17:26 -03:00
|
|
|
}
|
|
|
|
|
1990-10-14 09:07:46 -03:00
|
|
|
|
1996-05-22 13:34:47 -03:00
|
|
|
#ifdef Py_TRACE_REFS
|
1990-10-14 09:07:46 -03:00
|
|
|
|
1996-08-12 18:32:12 -03:00
|
|
|
void
|
2000-07-09 12:48:49 -03:00
|
|
|
_Py_NewReference(PyObject *op)
|
1990-10-14 09:07:46 -03:00
|
|
|
{
|
object.h special-build macro minefield: renamed all the new lexical
helper macros to something saner, and used them appropriately in other
files too, to reduce #ifdef blocks.
classobject.c, instance_dealloc(): One of my worst Python Memories is
trying to fix this routine a few years ago when COUNT_ALLOCS was defined
but Py_TRACE_REFS wasn't. The special-build code here is way too
complicated. Now it's much simpler. Difference: in a Py_TRACE_REFS
build, the instance is no longer in the doubly-linked list of live
objects while its __del__ method is executing, and that may be visible
via sys.getobjects() called from a __del__ method. Tough -- the object
is presumed dead while its __del__ is executing anyway, and not calling
_Py_NewReference() at the start allows enormous code simplification.
typeobject.c, call_finalizer(): The special-build instance_dealloc()
pain apparently spread to here too via cut-'n-paste, and this is much
simpler now too. In addition, I didn't understand why this routine
was calling _PyObject_GC_TRACK() after a resurrection, since there's no
plausible way _PyObject_GC_UNTRACK() could have been called on the
object by this point. I suspect it was left over from pasting the
instance_delloc() code. Instead asserted that the object is still
tracked. Caution: I suspect we don't have a test that actually
exercises the subtype_dealloc() __del__-resurrected-me code.
2002-07-11 03:23:50 -03:00
|
|
|
_Py_INC_REFTOTAL;
|
1990-10-14 09:07:46 -03:00
|
|
|
op->ob_refcnt = 1;
|
2003-03-23 13:52:28 -04:00
|
|
|
_Py_AddToAllObjects(op, 1);
|
object.h special-build macro minefield: renamed all the new lexical
helper macros to something saner, and used them appropriately in other
files too, to reduce #ifdef blocks.
classobject.c, instance_dealloc(): One of my worst Python Memories is
trying to fix this routine a few years ago when COUNT_ALLOCS was defined
but Py_TRACE_REFS wasn't. The special-build code here is way too
complicated. Now it's much simpler. Difference: in a Py_TRACE_REFS
build, the instance is no longer in the doubly-linked list of live
objects while its __del__ method is executing, and that may be visible
via sys.getobjects() called from a __del__ method. Tough -- the object
is presumed dead while its __del__ is executing anyway, and not calling
_Py_NewReference() at the start allows enormous code simplification.
typeobject.c, call_finalizer(): The special-build instance_dealloc()
pain apparently spread to here too via cut-'n-paste, and this is much
simpler now too. In addition, I didn't understand why this routine
was calling _PyObject_GC_TRACK() after a resurrection, since there's no
plausible way _PyObject_GC_UNTRACK() could have been called on the
object by this point. I suspect it was left over from pasting the
instance_delloc() code. Instead asserted that the object is still
tracked. Caution: I suspect we don't have a test that actually
exercises the subtype_dealloc() __del__-resurrected-me code.
2002-07-11 03:23:50 -03:00
|
|
|
_Py_INC_TPALLOCS(op);
|
1990-10-14 09:07:46 -03:00
|
|
|
}
|
|
|
|
|
1996-08-12 18:32:12 -03:00
|
|
|
void
|
2000-07-09 12:48:49 -03:00
|
|
|
_Py_ForgetReference(register PyObject *op)
|
1990-10-14 09:07:46 -03:00
|
|
|
{
|
2000-01-20 18:32:56 -04:00
|
|
|
#ifdef SLOW_UNREF_CHECK
|
2000-03-10 18:55:18 -04:00
|
|
|
register PyObject *p;
|
2000-01-20 18:32:56 -04:00
|
|
|
#endif
|
1995-01-02 15:07:15 -04:00
|
|
|
if (op->ob_refcnt < 0)
|
1997-05-02 00:12:38 -03:00
|
|
|
Py_FatalError("UNREF negative refcnt");
|
1992-09-03 17:32:55 -03:00
|
|
|
if (op == &refchain ||
|
2007-11-30 06:18:26 -04:00
|
|
|
op->_ob_prev->_ob_next != op || op->_ob_next->_ob_prev != op) {
|
|
|
|
fprintf(stderr, "* ob\n");
|
|
|
|
_PyObject_Dump(op);
|
|
|
|
fprintf(stderr, "* op->_ob_prev->_ob_next\n");
|
|
|
|
_PyObject_Dump(op->_ob_prev->_ob_next);
|
|
|
|
fprintf(stderr, "* op->_ob_next->_ob_prev\n");
|
|
|
|
_PyObject_Dump(op->_ob_next->_ob_prev);
|
1997-05-02 00:12:38 -03:00
|
|
|
Py_FatalError("UNREF invalid object");
|
2007-11-30 06:18:26 -04:00
|
|
|
}
|
1992-09-03 17:32:55 -03:00
|
|
|
#ifdef SLOW_UNREF_CHECK
|
1990-12-20 11:06:42 -04:00
|
|
|
for (p = refchain._ob_next; p != &refchain; p = p->_ob_next) {
|
|
|
|
if (p == op)
|
|
|
|
break;
|
|
|
|
}
|
1995-01-02 15:07:15 -04:00
|
|
|
if (p == &refchain) /* Not found */
|
1997-05-02 00:12:38 -03:00
|
|
|
Py_FatalError("UNREF unknown object");
|
1992-09-03 17:32:55 -03:00
|
|
|
#endif
|
1990-10-14 09:07:46 -03:00
|
|
|
op->_ob_next->_ob_prev = op->_ob_prev;
|
|
|
|
op->_ob_prev->_ob_next = op->_ob_next;
|
1992-09-03 17:32:55 -03:00
|
|
|
op->_ob_next = op->_ob_prev = NULL;
|
object.h special-build macro minefield: renamed all the new lexical
helper macros to something saner, and used them appropriately in other
files too, to reduce #ifdef blocks.
classobject.c, instance_dealloc(): One of my worst Python Memories is
trying to fix this routine a few years ago when COUNT_ALLOCS was defined
but Py_TRACE_REFS wasn't. The special-build code here is way too
complicated. Now it's much simpler. Difference: in a Py_TRACE_REFS
build, the instance is no longer in the doubly-linked list of live
objects while its __del__ method is executing, and that may be visible
via sys.getobjects() called from a __del__ method. Tough -- the object
is presumed dead while its __del__ is executing anyway, and not calling
_Py_NewReference() at the start allows enormous code simplification.
typeobject.c, call_finalizer(): The special-build instance_dealloc()
pain apparently spread to here too via cut-'n-paste, and this is much
simpler now too. In addition, I didn't understand why this routine
was calling _PyObject_GC_TRACK() after a resurrection, since there's no
plausible way _PyObject_GC_UNTRACK() could have been called on the
object by this point. I suspect it was left over from pasting the
instance_delloc() code. Instead asserted that the object is still
tracked. Caution: I suspect we don't have a test that actually
exercises the subtype_dealloc() __del__-resurrected-me code.
2002-07-11 03:23:50 -03:00
|
|
|
_Py_INC_TPFREES(op);
|
1990-12-20 11:06:42 -04:00
|
|
|
}
|
|
|
|
|
1996-08-12 18:32:12 -03:00
|
|
|
void
|
2000-07-09 12:48:49 -03:00
|
|
|
_Py_Dealloc(PyObject *op)
|
1990-12-20 11:06:42 -04:00
|
|
|
{
|
2007-12-18 22:45:37 -04:00
|
|
|
destructor dealloc = Py_TYPE(op)->tp_dealloc;
|
1997-05-02 00:12:38 -03:00
|
|
|
_Py_ForgetReference(op);
|
1994-09-07 11:36:45 -03:00
|
|
|
(*dealloc)(op);
|
1990-10-14 09:07:46 -03:00
|
|
|
}
|
|
|
|
|
2003-04-17 16:52:29 -03:00
|
|
|
/* Print all live objects. Because PyObject_Print is called, the
|
|
|
|
* interpreter must be in a healthy state.
|
|
|
|
*/
|
1996-08-12 18:32:12 -03:00
|
|
|
void
|
2000-07-09 12:48:49 -03:00
|
|
|
_Py_PrintReferences(FILE *fp)
|
1990-10-14 09:07:46 -03:00
|
|
|
{
|
1997-05-02 00:12:38 -03:00
|
|
|
PyObject *op;
|
1997-08-04 23:04:34 -03:00
|
|
|
fprintf(fp, "Remaining objects:\n");
|
1990-10-14 09:07:46 -03:00
|
|
|
for (op = refchain._ob_next; op != &refchain; op = op->_ob_next) {
|
2006-04-21 07:40:58 -03:00
|
|
|
fprintf(fp, "%p [%" PY_FORMAT_SIZE_T "d] ", op, op->ob_refcnt);
|
1997-05-02 00:12:38 -03:00
|
|
|
if (PyObject_Print(op, fp, 0) != 0)
|
|
|
|
PyErr_Clear();
|
1990-10-14 09:07:46 -03:00
|
|
|
putc('\n', fp);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2003-04-17 16:52:29 -03:00
|
|
|
/* Print the addresses of all live objects. Unlike _Py_PrintReferences, this
|
|
|
|
* doesn't make any calls to the Python C API, so is always safe to call.
|
|
|
|
*/
|
|
|
|
void
|
|
|
|
_Py_PrintReferenceAddresses(FILE *fp)
|
|
|
|
{
|
|
|
|
PyObject *op;
|
|
|
|
fprintf(fp, "Remaining object addresses:\n");
|
|
|
|
for (op = refchain._ob_next; op != &refchain; op = op->_ob_next)
|
2006-04-21 07:40:58 -03:00
|
|
|
fprintf(fp, "%p [%" PY_FORMAT_SIZE_T "d] %s\n", op,
|
2007-12-18 22:45:37 -04:00
|
|
|
op->ob_refcnt, Py_TYPE(op)->tp_name);
|
2003-04-17 16:52:29 -03:00
|
|
|
}
|
|
|
|
|
1995-08-29 06:18:14 -03:00
|
|
|
PyObject *
|
2000-07-09 12:48:49 -03:00
|
|
|
_Py_GetObjects(PyObject *self, PyObject *args)
|
1995-08-29 06:18:14 -03:00
|
|
|
{
|
|
|
|
int i, n;
|
|
|
|
PyObject *t = NULL;
|
|
|
|
PyObject *res, *op;
|
|
|
|
|
|
|
|
if (!PyArg_ParseTuple(args, "i|O", &n, &t))
|
|
|
|
return NULL;
|
|
|
|
op = refchain._ob_next;
|
|
|
|
res = PyList_New(0);
|
|
|
|
if (res == NULL)
|
|
|
|
return NULL;
|
|
|
|
for (i = 0; (n == 0 || i < n) && op != &refchain; i++) {
|
|
|
|
while (op == self || op == args || op == res || op == t ||
|
2007-12-18 22:45:37 -04:00
|
|
|
(t != NULL && Py_TYPE(op) != (PyTypeObject *) t)) {
|
1995-08-29 06:18:14 -03:00
|
|
|
op = op->_ob_next;
|
|
|
|
if (op == &refchain)
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
if (PyList_Append(res, op) < 0) {
|
|
|
|
Py_DECREF(res);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
op = op->_ob_next;
|
|
|
|
}
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
1990-10-14 09:07:46 -03:00
|
|
|
#endif
|
1996-01-11 21:24:09 -04:00
|
|
|
|
|
|
|
|
|
|
|
/* Hack to force loading of cobject.o */
|
1996-12-05 17:58:58 -04:00
|
|
|
PyTypeObject *_Py_cobject_hack = &PyCObject_Type;
|
1996-05-22 13:34:47 -03:00
|
|
|
|
|
|
|
|
|
|
|
/* Hack to force loading of abstract.o */
|
2006-02-15 13:27:45 -04:00
|
|
|
Py_ssize_t (*_Py_abstract_hack)(PyObject *) = PyObject_Size;
|
1997-08-04 23:04:34 -03:00
|
|
|
|
|
|
|
|
2000-08-16 09:27:23 -03:00
|
|
|
/* Python's malloc wrappers (see pymem.h) */
|
1997-08-04 23:04:34 -03:00
|
|
|
|
2000-07-25 09:56:38 -03:00
|
|
|
void *
|
2000-07-09 12:48:49 -03:00
|
|
|
PyMem_Malloc(size_t nbytes)
|
1997-08-04 23:04:34 -03:00
|
|
|
{
|
2000-05-03 20:44:39 -03:00
|
|
|
return PyMem_MALLOC(nbytes);
|
1997-08-04 23:04:34 -03:00
|
|
|
}
|
|
|
|
|
2000-07-25 09:56:38 -03:00
|
|
|
void *
|
|
|
|
PyMem_Realloc(void *p, size_t nbytes)
|
1997-08-04 23:04:34 -03:00
|
|
|
{
|
First stab at rationalizing the PyMem_ API. Mixing PyObject_xyz with
PyMem_{Del, DEL} doesn't work yet (compilation problems).
pyport.h: _PyMem_EXTRA is gone.
pmem.h: Repaired comments. PyMem_{Malloc, MALLOC} and
PyMem_{Realloc, REALLOC} now make the same x-platform guarantees when
asking for 0 bytes, and when passing a NULL pointer to the latter.
object.c: PyMem_{Malloc, Realloc} just call their macro versions
now, since the latter take care of the x-platform 0 and NULL stuff
by themselves now.
pypcre.c, grow_stack(): So sue me. On two lines, this called
PyMem_RESIZE to grow a "const" area. It's not legit to realloc a
const area, so the compiler warned given the new expansion of
PyMem_RESIZE. It would have gotten the same warning before if it
had used PyMem_Resize() instead; the older macro version, but not the
function version, silently cast away the constness. IMO that was a wrong
thing to do, and the docs say the macro versions of PyMem_xyz are
deprecated anyway. If somebody else is resizing const areas with the
macro spelling, they'll get a warning when they recompile now too.
2002-04-12 04:22:56 -03:00
|
|
|
return PyMem_REALLOC(p, nbytes);
|
1997-08-04 23:04:34 -03:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
2000-07-25 09:56:38 -03:00
|
|
|
PyMem_Free(void *p)
|
1997-08-04 23:04:34 -03:00
|
|
|
{
|
2000-05-03 20:44:39 -03:00
|
|
|
PyMem_FREE(p);
|
1997-08-04 23:04:34 -03:00
|
|
|
}
|
|
|
|
|
2000-05-03 20:44:39 -03:00
|
|
|
|
1998-04-10 19:32:46 -03:00
|
|
|
/* These methods are used to control infinite recursion in repr, str, print,
|
|
|
|
etc. Container objects that may recursively contain themselves,
|
|
|
|
e.g. builtin dictionaries and lists, should used Py_ReprEnter() and
|
|
|
|
Py_ReprLeave() to avoid infinite recursion.
|
|
|
|
|
|
|
|
Py_ReprEnter() returns 0 the first time it is called for a particular
|
|
|
|
object and 1 every time thereafter. It returns -1 if an exception
|
|
|
|
occurred. Py_ReprLeave() has no return value.
|
|
|
|
|
|
|
|
See dictobject.c and listobject.c for examples of use.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define KEY "Py_Repr"
|
|
|
|
|
|
|
|
int
|
2000-07-09 12:48:49 -03:00
|
|
|
Py_ReprEnter(PyObject *obj)
|
1998-04-10 19:32:46 -03:00
|
|
|
{
|
|
|
|
PyObject *dict;
|
|
|
|
PyObject *list;
|
2006-02-15 13:27:45 -04:00
|
|
|
Py_ssize_t i;
|
1998-04-10 19:32:46 -03:00
|
|
|
|
|
|
|
dict = PyThreadState_GetDict();
|
|
|
|
if (dict == NULL)
|
2003-04-15 12:12:39 -03:00
|
|
|
return 0;
|
1998-04-10 19:32:46 -03:00
|
|
|
list = PyDict_GetItemString(dict, KEY);
|
|
|
|
if (list == NULL) {
|
|
|
|
list = PyList_New(0);
|
|
|
|
if (list == NULL)
|
|
|
|
return -1;
|
|
|
|
if (PyDict_SetItemString(dict, KEY, list) < 0)
|
|
|
|
return -1;
|
|
|
|
Py_DECREF(list);
|
|
|
|
}
|
|
|
|
i = PyList_GET_SIZE(list);
|
|
|
|
while (--i >= 0) {
|
|
|
|
if (PyList_GET_ITEM(list, i) == obj)
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
PyList_Append(list, obj);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
2000-07-09 12:48:49 -03:00
|
|
|
Py_ReprLeave(PyObject *obj)
|
1998-04-10 19:32:46 -03:00
|
|
|
{
|
|
|
|
PyObject *dict;
|
|
|
|
PyObject *list;
|
2006-02-15 13:27:45 -04:00
|
|
|
Py_ssize_t i;
|
1998-04-10 19:32:46 -03:00
|
|
|
|
|
|
|
dict = PyThreadState_GetDict();
|
1998-04-11 12:17:34 -03:00
|
|
|
if (dict == NULL)
|
|
|
|
return;
|
1998-04-10 19:32:46 -03:00
|
|
|
list = PyDict_GetItemString(dict, KEY);
|
1998-04-11 12:17:34 -03:00
|
|
|
if (list == NULL || !PyList_Check(list))
|
|
|
|
return;
|
1998-04-10 19:32:46 -03:00
|
|
|
i = PyList_GET_SIZE(list);
|
|
|
|
/* Count backwards because we always expect obj to be list[-1] */
|
|
|
|
while (--i >= 0) {
|
|
|
|
if (PyList_GET_ITEM(list, i) == obj) {
|
|
|
|
PyList_SetSlice(list, i, i + 1, NULL);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2000-03-13 12:01:29 -04:00
|
|
|
|
2002-07-07 02:13:56 -03:00
|
|
|
/* Trashcan support. */
|
2000-04-24 12:40:53 -03:00
|
|
|
|
2002-07-07 02:13:56 -03:00
|
|
|
/* Current call-stack depth of tp_dealloc calls. */
|
2000-03-13 12:01:29 -04:00
|
|
|
int _PyTrash_delete_nesting = 0;
|
2000-04-24 12:40:53 -03:00
|
|
|
|
2002-07-07 02:13:56 -03:00
|
|
|
/* List of objects that still need to be cleaned up, singly linked via their
|
|
|
|
* gc headers' gc_prev pointers.
|
|
|
|
*/
|
|
|
|
PyObject *_PyTrash_delete_later = NULL;
|
2000-03-13 12:01:29 -04:00
|
|
|
|
2002-07-07 02:13:56 -03:00
|
|
|
/* Add op to the _PyTrash_delete_later list. Called when the current
|
|
|
|
* call-stack depth gets large. op must be a currently untracked gc'ed
|
|
|
|
* object, with refcount 0. Py_DECREF must already have been called on it.
|
|
|
|
*/
|
2000-03-13 12:01:29 -04:00
|
|
|
void
|
2000-07-09 12:48:49 -03:00
|
|
|
_PyTrash_deposit_object(PyObject *op)
|
2000-03-13 12:01:29 -04:00
|
|
|
{
|
2002-07-07 02:13:56 -03:00
|
|
|
assert(PyObject_IS_GC(op));
|
|
|
|
assert(_Py_AS_GC(op)->gc.gc_refs == _PyGC_REFS_UNTRACKED);
|
|
|
|
assert(op->ob_refcnt == 0);
|
2002-03-28 23:05:54 -04:00
|
|
|
_Py_AS_GC(op)->gc.gc_prev = (PyGC_Head *)_PyTrash_delete_later;
|
2000-04-24 12:40:53 -03:00
|
|
|
_PyTrash_delete_later = op;
|
2000-03-13 12:01:29 -04:00
|
|
|
}
|
|
|
|
|
2002-07-07 02:13:56 -03:00
|
|
|
/* Dealloccate all the objects in the _PyTrash_delete_later list. Called when
|
|
|
|
* the call-stack unwinds again.
|
|
|
|
*/
|
2000-03-13 12:01:29 -04:00
|
|
|
void
|
2000-07-09 12:48:49 -03:00
|
|
|
_PyTrash_destroy_chain(void)
|
2000-03-13 12:01:29 -04:00
|
|
|
{
|
|
|
|
while (_PyTrash_delete_later) {
|
2002-07-07 02:13:56 -03:00
|
|
|
PyObject *op = _PyTrash_delete_later;
|
2007-12-18 22:45:37 -04:00
|
|
|
destructor dealloc = Py_TYPE(op)->tp_dealloc;
|
2002-03-28 23:05:54 -04:00
|
|
|
|
|
|
|
_PyTrash_delete_later =
|
2002-07-07 02:13:56 -03:00
|
|
|
(PyObject*) _Py_AS_GC(op)->gc.gc_prev;
|
2000-04-24 12:40:53 -03:00
|
|
|
|
2002-07-07 02:13:56 -03:00
|
|
|
/* Call the deallocator directly. This used to try to
|
|
|
|
* fool Py_DECREF into calling it indirectly, but
|
|
|
|
* Py_DECREF was already called on this object, and in
|
|
|
|
* assorted non-release builds calling Py_DECREF again ends
|
|
|
|
* up distorting allocation statistics.
|
|
|
|
*/
|
|
|
|
assert(op->ob_refcnt == 0);
|
2000-03-13 12:01:29 -04:00
|
|
|
++_PyTrash_delete_nesting;
|
2002-07-07 02:13:56 -03:00
|
|
|
(*dealloc)(op);
|
2000-03-13 12:01:29 -04:00
|
|
|
--_PyTrash_delete_nesting;
|
|
|
|
}
|
|
|
|
}
|
2006-04-21 07:40:58 -03:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|