Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
B
BTrees
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
Kirill Smelkov
BTrees
Commits
fdbe18c3
Commit
fdbe18c3
authored
Nov 06, 2012
by
Tres Seaver
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Test the pure-Python OOBTree implementation in parallel.
parent
d8f09582
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
171 additions
and
15 deletions
+171
-15
BTrees/OOBTree.py
BTrees/OOBTree.py
+95
-6
BTrees/___BTree.py
BTrees/___BTree.py
+2
-0
BTrees/check.py
BTrees/check.py
+11
-0
BTrees/tests/test_OOBTree.py
BTrees/tests/test_OOBTree.py
+63
-9
No files found.
BTrees/OOBTree.py
View file @
fdbe18c3
...
@@ -12,13 +12,102 @@
...
@@ -12,13 +12,102 @@
#
#
##############################################################################
##############################################################################
import
zope.interface
from
zope.interface
import
moduleProvides
import
BTrees.Interfaces
from
BTrees.Interfaces
import
IObjectObjectBTreeModule
from
BTrees.___BTree
import
Bucket
from
BTrees.___BTree
import
Set
from
BTrees.___BTree
import
Tree
as
BTree
from
BTrees.___BTree
import
TreeSet
from
BTrees.___BTree
import
difference
as
_difference
from
BTrees.___BTree
import
intersection
as
_intersection
from
BTrees.___BTree
import
setop
as
_setop
from
BTrees.___BTree
import
union
as
_union
from
BTrees.___BTree
import
to_ob
as
_to_key
from
BTrees.___BTree
import
to_ob
as
_to_value
_BUCKET_SIZE
=
30
_TREE_SIZE
=
250
using64bits
=
False
class
OOBucketPy
(
Bucket
):
MAX_SIZE
=
_BUCKET_SIZE
_to_key
=
_to_key
_to_value
=
_to_value
try
:
from
_OOBTree
import
OOBucket
except
ImportError
:
OOBucket
=
Bucket
=
OOBucketPy
else
:
Bucket
=
OOBucket
class
OOSetPy
(
Set
):
MAX_SIZE
=
_BUCKET_SIZE
_to_key
=
_to_key
try
:
from
_OOBTree
import
OOSet
except
ImportError
:
OOSet
=
Set
=
OOSetPy
else
:
Set
=
OOSet
class
OOBTreePy
(
BTree
):
MAX_SIZE
=
_TREE_SIZE
_to_key
=
_to_key
_to_value
=
_to_value
try
:
from
_OOBTree
import
OOBTree
except
ImportError
:
OOBTree
=
BTree
=
OOBTreePy
else
:
BTree
=
OOBTree
class
OOTreeSetPy
(
TreeSet
):
MAX_SIZE
=
_TREE_SIZE
_to_key
=
_to_key
try
:
try
:
from
_OOBTree
import
*
from
_OOBTree
import
OOTreeSet
except
ImportError
:
except
ImportError
:
import
___BTree
OOTreeSet
=
TreeSet
=
OOTreeSetPy
___BTree
.
_import
(
globals
(),
'OO'
,
30
,
250
)
else
:
TreeSet
=
OOTreeSet
# Can't declare forward refs, so fix up afterwards:
OOBucketPy
.
_mapping_type
=
OOBucketPy
.
_bucket_type
=
OOBucketPy
OOBucketPy
.
_set_type
=
OOSetPy
OOSetPy
.
_mapping_type
=
OOSetPy
OOSetPy
.
_set_type
=
OOSetPy
.
_bucket_type
=
OOSetPy
OOBTreePy
.
_mapping_type
=
OOBTreePy
.
_bucket_type
=
OOBucketPy
OOBTreePy
.
_set_type
=
OOSetPy
OOTreeSetPy
.
_mapping_type
=
OOSetPy
OOTreeSetPy
.
_set_type
=
OOTreeSetPy
.
_bucket_type
=
OOSetPy
differencePy
=
_setop
(
_difference
,
OOSetPy
)
try
:
from
_OOBTree
import
difference
except
ImportError
:
difference
=
differencePy
unionPy
=
_setop
(
_union
,
OOSetPy
)
try
:
from
_OOBTree
import
union
except
ImportError
:
union
=
unionPy
intersectionPy
=
_setop
(
_intersection
,
OOSetPy
)
try
:
from
_OOBTree
import
intersection
except
ImportError
:
intersection
=
intersectionPy
zope
.
interface
.
moduleProvides
(
BTrees
.
Interfaces
.
IObjectObjectBTreeModule
)
moduleProvides
(
IObjectObjectBTreeModule
)
BTrees/___BTree.py
View file @
fdbe18c3
...
@@ -342,6 +342,8 @@ class _MappingBase(_Base):
...
@@ -342,6 +342,8 @@ class _MappingBase(_Base):
def
__setitem__
(
self
,
key
,
value
):
def
__setitem__
(
self
,
key
,
value
):
# TODO: enforce test that key has non-default comparison?
# TODO: enforce test that key has non-default comparison?
#if getattr(key, '__cmp__', None) is object.__cmp__:
# raise TypeError("Can't use default __cmp__")
self
.
_set
(
self
.
_to_key
(
key
),
self
.
_to_value
(
value
))
self
.
_set
(
self
.
_to_key
(
key
),
self
.
_to_value
(
value
))
def
__delitem__
(
self
,
key
):
def
__delitem__
(
self
,
key
):
...
...
BTrees/check.py
View file @
fdbe18c3
...
@@ -33,6 +33,7 @@ that doesn't exist in the actual BTree).
...
@@ -33,6 +33,7 @@ that doesn't exist in the actual BTree).
"""
"""
from
BTrees.OOBTree
import
OOBTree
,
OOBucket
,
OOSet
,
OOTreeSet
from
BTrees.OOBTree
import
OOBTree
,
OOBucket
,
OOSet
,
OOTreeSet
from
BTrees.OOBTree
import
OOBTreePy
,
OOBucketPy
,
OOSetPy
,
OOTreeSetPy
from
BTrees.OIBTree
import
OIBTree
,
OIBucket
,
OISet
,
OITreeSet
from
BTrees.OIBTree
import
OIBTree
,
OIBucket
,
OISet
,
OITreeSet
from
BTrees.IOBTree
import
IOBTree
,
IOBucket
,
IOSet
,
IOTreeSet
from
BTrees.IOBTree
import
IOBTree
,
IOBucket
,
IOSet
,
IOTreeSet
from
BTrees.IIBTree
import
IIBTree
,
IIBucket
,
IISet
,
IITreeSet
from
BTrees.IIBTree
import
IIBTree
,
IIBucket
,
IISet
,
IITreeSet
...
@@ -59,6 +60,9 @@ for kv in ('OO',
...
@@ -59,6 +60,9 @@ for kv in ('OO',
(
'Set'
,
(
TYPE_BUCKET
,
False
)),
(
'Set'
,
(
TYPE_BUCKET
,
False
)),
):
):
_type2kind
[
globals
()[
kv
+
name
]]
=
kind
_type2kind
[
globals
()[
kv
+
name
]]
=
kind
py
=
kv
+
name
+
'Py'
if
py
in
globals
():
_type2kind
[
globals
()[
py
]]
=
kind
# Return pair
# Return pair
#
#
...
@@ -114,7 +118,14 @@ for kv in ('OO',
...
@@ -114,7 +118,14 @@ for kv in ('OO',
'LL'
,
'LO'
,
'OL'
,
'LF'
,
'LL'
,
'LO'
,
'OL'
,
'LF'
,
):
):
_btree2bucket
[
globals
()[
kv
+
'BTree'
]]
=
globals
()[
kv
+
'Bucket'
]
_btree2bucket
[
globals
()[
kv
+
'BTree'
]]
=
globals
()[
kv
+
'Bucket'
]
py
=
kv
+
'BTreePy'
if
py
in
globals
():
_btree2bucket
[
globals
()[
py
]]
=
globals
()[
kv
+
'BucketPy'
]
_btree2bucket
[
globals
()[
kv
+
'TreeSet'
]]
=
globals
()[
kv
+
'Set'
]
_btree2bucket
[
globals
()[
kv
+
'TreeSet'
]]
=
globals
()[
kv
+
'Set'
]
py
=
kv
+
'TreeSetPy'
if
py
in
globals
():
_btree2bucket
[
globals
()[
kv
+
'TreeSetPy'
]]
=
globals
()[
kv
+
'SetPy'
]
def
crack_btree
(
t
,
is_mapping
):
def
crack_btree
(
t
,
is_mapping
):
state
=
t
.
__getstate__
()
state
=
t
.
__getstate__
()
...
...
BTrees/tests/test_OOBTree.py
View file @
fdbe18c3
...
@@ -24,6 +24,12 @@ from BTrees.tests.common import NormalSetTests
...
@@ -24,6 +24,12 @@ from BTrees.tests.common import NormalSetTests
class
OOBTreeInternalKeyTest
(
InternalKeysMappingTest
,
unittest
.
TestCase
):
class
OOBTreeInternalKeyTest
(
InternalKeysMappingTest
,
unittest
.
TestCase
):
def
_getTargetClass
(
self
):
from
BTrees.OOBTree
import
OOBTreePy
return
OOBTreePy
class
OOBTreePyInternalKeyTest
(
InternalKeysMappingTest
,
unittest
.
TestCase
):
def
_getTargetClass
(
self
):
def
_getTargetClass
(
self
):
from
BTrees.OOBTree
import
OOBTree
from
BTrees.OOBTree
import
OOBTree
return
OOBTree
return
OOBTree
...
@@ -36,6 +42,13 @@ class OOTreeSetInternalKeyTest(InternalKeysSetTest, unittest.TestCase):
...
@@ -36,6 +42,13 @@ class OOTreeSetInternalKeyTest(InternalKeysSetTest, unittest.TestCase):
return
OOTreeSet
return
OOTreeSet
class
OOTreeSetPyInternalKeyTest
(
InternalKeysSetTest
,
unittest
.
TestCase
):
def
_getTargetClass
(
self
):
from
BTrees.OOBTree
import
OOTreeSetPy
return
OOTreeSetPy
class
OOBucketTest
(
MappingBase
,
unittest
.
TestCase
):
class
OOBucketTest
(
MappingBase
,
unittest
.
TestCase
):
def
_getTargetClass
(
self
):
def
_getTargetClass
(
self
):
...
@@ -43,6 +56,13 @@ class OOBucketTest(MappingBase, unittest.TestCase):
...
@@ -43,6 +56,13 @@ class OOBucketTest(MappingBase, unittest.TestCase):
return
OOBucket
return
OOBucket
class
OOBucketPyTest
(
MappingBase
,
unittest
.
TestCase
):
def
_getTargetClass
(
self
):
from
BTrees.OOBTree
import
OOBucketPy
return
OOBucketPy
class
OOTreeSetTest
(
NormalSetTests
,
unittest
.
TestCase
):
class
OOTreeSetTest
(
NormalSetTests
,
unittest
.
TestCase
):
def
_getTargetClass
(
self
):
def
_getTargetClass
(
self
):
...
@@ -50,6 +70,13 @@ class OOTreeSetTest(NormalSetTests, unittest.TestCase):
...
@@ -50,6 +70,13 @@ class OOTreeSetTest(NormalSetTests, unittest.TestCase):
return
OOTreeSet
return
OOTreeSet
class
OOTreeSetPyTest
(
NormalSetTests
,
unittest
.
TestCase
):
def
_getTargetClass
(
self
):
from
BTrees.OOBTree
import
OOTreeSetPy
return
OOTreeSetPy
class
OOSetTest
(
ExtendedSetTests
,
unittest
.
TestCase
):
class
OOSetTest
(
ExtendedSetTests
,
unittest
.
TestCase
):
def
_getTargetClass
(
self
):
def
_getTargetClass
(
self
):
...
@@ -57,17 +84,12 @@ class OOSetTest(ExtendedSetTests, unittest.TestCase):
...
@@ -57,17 +84,12 @@ class OOSetTest(ExtendedSetTests, unittest.TestCase):
return
OOSet
return
OOSet
class
OO
ModuleTest
(
ModuleTest
,
unittest
.
TestCase
):
class
OO
SetPyTest
(
ExtendedSetTests
,
unittest
.
TestCase
):
prefix
=
'OO'
def
_getTargetClass
(
self
):
from
BTrees.OOBTree
import
OOSetPy
return
OOSetPy
def
_getModule
(
self
):
import
BTrees
return
BTrees
.
OOBTree
def
_getInterface
(
self
):
import
BTrees.Interfaces
return
BTrees
.
Interfaces
.
IObjectObjectBTreeModule
class
OOBTreeTest
(
BTreeTests
,
unittest
.
TestCase
):
class
OOBTreeTest
(
BTreeTests
,
unittest
.
TestCase
):
...
@@ -110,13 +132,45 @@ class OOBTreeTest(BTreeTests, unittest.TestCase):
...
@@ -110,13 +132,45 @@ class OOBTreeTest(BTreeTests, unittest.TestCase):
t
.
clear
()
t
.
clear
()
#class OOBTreePyTest(OOBTreeTest):
#
# Right now, we can't match the C extension's test / prohibition of the
# default 'object' comparison semantics.
class
OOBTreePyTest
(
BTreeTests
,
unittest
.
TestCase
):
def
_makeOne
(
self
):
from
BTrees.OOBTree
import
OOBTreePy
return
OOBTreePy
()
class
OOModuleTest
(
ModuleTest
,
unittest
.
TestCase
):
prefix
=
'OO'
def
_getModule
(
self
):
import
BTrees
return
BTrees
.
OOBTree
def
_getInterface
(
self
):
import
BTrees.Interfaces
return
BTrees
.
Interfaces
.
IObjectObjectBTreeModule
def
test_suite
():
def
test_suite
():
return
unittest
.
TestSuite
((
return
unittest
.
TestSuite
((
unittest
.
makeSuite
(
OOBTreeInternalKeyTest
),
unittest
.
makeSuite
(
OOBTreeInternalKeyTest
),
unittest
.
makeSuite
(
OOBTreePyInternalKeyTest
),
unittest
.
makeSuite
(
OOTreeSetInternalKeyTest
),
unittest
.
makeSuite
(
OOTreeSetInternalKeyTest
),
unittest
.
makeSuite
(
OOTreeSetPyInternalKeyTest
),
unittest
.
makeSuite
(
OOBucketTest
),
unittest
.
makeSuite
(
OOBucketTest
),
unittest
.
makeSuite
(
OOBucketPyTest
),
unittest
.
makeSuite
(
OOTreeSetTest
),
unittest
.
makeSuite
(
OOTreeSetTest
),
unittest
.
makeSuite
(
OOTreeSetPyTest
),
unittest
.
makeSuite
(
OOSetTest
),
unittest
.
makeSuite
(
OOSetTest
),
unittest
.
makeSuite
(
OOSetPyTest
),
unittest
.
makeSuite
(
OOModuleTest
),
unittest
.
makeSuite
(
OOModuleTest
),
unittest
.
makeSuite
(
OOBTreeTest
),
unittest
.
makeSuite
(
OOBTreeTest
),
unittest
.
makeSuite
(
OOBTreePyTest
),
unittest
.
makeSuite
(
OOModuleTest
),
))
))
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