[Zodb-checkins] CVS: Zope3/src/BTrees - check.py:1.6

Tim Peters tim.one at comcast.net
Tue Apr 6 16:22:26 EDT 2004

Update of /cvs-repository/Zope3/src/BTrees
In directory cvs.zope.org:/tmp/cvs-serv30747/src/BTrees

Modified Files:
Log Message:
As part of int/long unification, Python 2.4 will start printing
negative ints *as* negative ints when fed into %x formats.  Python 2.3
still renders them as positive ints, but spews

FutureWarning: %u/%o/%x/%X of negative int will return a signed string
               in Python 2.4 and up

to warn about the impending change.  Jim reported two instances of that
warning when running the tests on a box where addresses happen to "be
negative".  So make the addresses look positive instead (2.3 and 2.4
treat those the same, so 2.3 doesn't warn about those).

Problem:  it occurs to me now that I'm assuming addresses fit in 32
bits here.

=== Zope3/src/BTrees/check.py 1.5 => 1.6 ===
--- Zope3/src/BTrees/check.py:1.5	Thu Oct  2 16:17:53 2003
+++ Zope3/src/BTrees/check.py	Tue Apr  6 16:21:55 2004
@@ -198,7 +198,9 @@
     return keys, values
 def type_and_adr(obj):
-    return "%s (0x%x)" % (type(obj).__name__, id(obj))
+    # Force the address to look positive.  A negative address will
+    # show up as signed in Python 2.4, and in 2.3 raises FutureWarning.
+    return "%s (0x%x)" % (type(obj).__name__, id(obj) & 0xffffffffL)
 # Walker implements a depth-first search of a BTree (or TreeSet or Set or
 # Bucket).  Subclasses must implement the visit_btree() and visit_bucket()

More information about the Zodb-checkins mailing list