Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Z
ZODB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Nicolas Wavrant
ZODB
Commits
a8ef9518
Commit
a8ef9518
authored
Oct 27, 2010
by
Jim Fulton
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rolled back BTree sanity warning for later release
parent
485a07d5
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
5 additions
and
93 deletions
+5
-93
src/BTrees/BTreeModuleTemplate.c
src/BTrees/BTreeModuleTemplate.c
+0
-6
src/BTrees/objectkeymacros.h
src/BTrees/objectkeymacros.h
+1
-25
src/BTrees/tests/testBTrees.py
src/BTrees/tests/testBTrees.py
+3
-50
src/CHANGES.txt
src/CHANGES.txt
+1
-7
src/ZODB/ConflictResolution.txt
src/ZODB/ConflictResolution.txt
+0
-5
No files found.
src/BTrees/BTreeModuleTemplate.c
View file @
a8ef9518
...
...
@@ -465,12 +465,6 @@ INITMODULE (void)
{
PyObject
*
m
,
*
d
,
*
c
;
#ifdef KEY_TYPE_IS_PYOBJECT
object_
=
PyTuple_GetItem
(
Py_None
->
ob_type
->
tp_bases
,
0
);
if
(
object_
==
NULL
)
return
;
#endif
sort_str
=
PyString_InternFromString
(
"sort"
);
if
(
!
sort_str
)
return
;
...
...
src/BTrees/objectkeymacros.h
View file @
a8ef9518
#define KEYMACROS_H "$Id$\n"
#define KEY_TYPE PyObject *
#define KEY_TYPE_IS_PYOBJECT
#include "Python.h"
static
PyObject
*
object_
;
static
int
check_argument_cmp
(
PyObject
*
arg
)
{
if
(
arg
->
ob_type
->
tp_richcompare
==
NULL
&&
arg
->
ob_type
->
tp_compare
==
((
PyTypeObject
*
)
object_
)
->
ob_type
->
tp_compare
)
{
return
PyErr_WarnEx
(
PyExc_UserWarning
,
"Object has default comparison! This will error in 3.11"
,
1
)
>=
0
;
}
return
1
;
}
#define TEST_KEY_SET_OR(V, KEY, TARGET) if ( ( (V) = PyObject_Compare((KEY),(TARGET)) ), PyErr_Occurred() )
#define INCREF_KEY(k) Py_INCREF(k)
#define DECREF_KEY(KEY) Py_DECREF(KEY)
#define COPY_KEY(KEY, E) KEY=(E)
#define COPY_KEY_TO_OBJECT(O, K) O=(K); Py_INCREF(O)
#define COPY_KEY_FROM_ARG(TARGET, ARG, S) \
TARGET=(ARG); \
(S) = check_argument_cmp(ARG);
#define COPY_KEY_FROM_ARG(TARGET, ARG, S) TARGET=(ARG)
src/BTrees/tests/testBTrees.py
View file @
a8ef9518
...
...
@@ -15,7 +15,6 @@ import gc
import
pickle
import
random
import
StringIO
import
sys
from
unittest
import
TestCase
,
TestSuite
,
TextTestRunner
,
makeSuite
from
types
import
ClassType
import
zope.interface.verify
...
...
@@ -1885,55 +1884,6 @@ class OOBTreeTest(BTreeTests):
def
setUp
(
self
):
self
.
t
=
OOBTree
()
def
testRejectDefaultComparison
(
self
):
# Check that passing int keys w default comparison fails.
# Only applies to new-style class instances. Old-style
# instances are too hard to introspect.
# This is white box because we know that the check is being
# used in a function that's used in lots of places.
# Otherwise, there are many permutations that would have to be
# checked.
import
warnings
class
C
(
object
):
pass
with
warnings
.
catch_warnings
(
record
=
True
)
as
w
:
# Cause all warnings to always be triggered.
warnings
.
simplefilter
(
"always"
)
self
.
t
[
C
()]
=
1
# Verify some things
n
=
len
(
w
)
# somewhat unpredictable #
for
m
in
w
:
self
.
assertEqual
(
m
.
category
,
UserWarning
)
self
.
assert_
(
"Object has default comparison"
in
str
(
m
.
message
))
self
.
t
.
clear
()
class
C
(
object
):
def
__cmp__
(
*
args
):
return
1
self
.
t
[
C
()]
=
1
self
.
t
.
clear
()
class
C
(
object
):
def
__lt__
(
*
args
):
return
1
self
.
t
[
C
()]
=
1
self
.
t
.
clear
()
self
.
assertEqual
(
len
(
w
),
n
)
if
sys
.
version_info
[:
2
]
<
(
2
,
6
):
del
testRejectDefaultComparison
if
using64bits
:
class
IIBTreeTest
(
BTreeTests
,
TestLongIntKeys
,
TestLongIntValues
):
def
setUp
(
self
):
...
...
@@ -1972,6 +1922,9 @@ class OLBTreeTest(BTreeTests, TestLongIntValues):
self
.
t
=
OLBTree
()
def
getTwoKeys
(
self
):
return
object
(),
object
()
class
OOBTreeTest
(
BTreeTests
):
def
setUp
(
self
):
self
.
t
=
OOBTree
()
# cmp error propagation tests
...
...
src/CHANGES.txt
View file @
a8ef9518
...
...
@@ -2,7 +2,7 @@
Change History
================
3.10.1 (2010-10-
27
)
3.10.1 (2010-10-
??
)
===================
Bugs Fixed
...
...
@@ -28,12 +28,6 @@ Bugs Fixed
don't send invalidations. There's no reason to send them when an
external garbage collector is used.
- BTrees allowed object keys with insane comparison. (Comparison
inherited from object, which compares based on in-process address.)
Now BTrees warn if an attempt is made to save a key with
comparison inherited from object. (This doesn't apply to old-style
class instances.) This will become an error in ZODB 3.11.
- ZEO client cache simulation misshandled invalidations
causing incorrect statistics and errors.
...
...
src/ZODB/ConflictResolution.txt
View file @
a8ef9518
...
...
@@ -65,11 +65,6 @@ use:
from persistent import Persistent
class PCounter(Persistent):
'`value` is readonly; increment it with `inc`.'
def __cmp__(self, other):
'Fool BTree checks for sane comparison :/'
return object.__cmp__(self, other)
_val = 0
def inc(self):
self._val += 1
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment