Skip to content

Commit 88cad39

Browse files
authored
use shallow copy instead of deepcopy (#18)
1 parent d222bb8 commit 88cad39

File tree

4 files changed

+23
-5
lines changed

4 files changed

+23
-5
lines changed

.github/workflows/python_package.yaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
name: CI
22

3-
on: [push]
3+
on:
4+
push:
5+
branches: [master, ]
6+
pull_request:
7+
# The branches below must be a subset of the branches above
8+
branches: [master]
49

510
jobs:
611
pytest:

aabbtree.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
"""Class definitions and methods for the AABB and AABBTree."""
22

3-
import copy
43
from collections import deque
54

65
__all__ = ['AABB', 'AABBTree']
@@ -404,7 +403,7 @@ def add(self, aabb, value=None, method='volume'):
404403
self.value = value
405404

406405
elif self.is_leaf:
407-
self.left = copy.deepcopy(self)
406+
self.left = AABBTree(self.aabb, value=self.value, left=self.left, right=self.right)
408407
self.right = AABBTree(aabb, value)
409408

410409
self.aabb = AABB.merge(self.aabb, aabb)
@@ -438,7 +437,7 @@ def add(self, aabb, value=None, method='volume'):
438437
raise ValueError('Unrecognized method: ' + str(method))
439438

440439
if branch_cost < left_cost and branch_cost < right_cost:
441-
self.left = copy.deepcopy(self)
440+
self.left = AABBTree(self.aabb, value=self.value, left=self.left, right=self.right)
442441
self.right = AABBTree(aabb, value)
443442
self.value = None
444443
elif left_cost < right_cost:

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def read(fname):
1515

1616
setup(
1717
name='aabbtree',
18-
version='2.8.0',
18+
version='2.8.1',
1919
license='MIT',
2020
description='Pure Python implementation of d-dimensional AABB tree.',
2121
long_description=read('README.rst'),

tests/test_aabbtree.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,20 @@ def test_overlap_values_error():
257257
tree.overlap_values(aabbs[0], method=method)
258258

259259

260+
def test_return_the_origin_pass_in_value():
261+
class Foo:
262+
pass
263+
264+
tree = AABBTree()
265+
value_set = {Foo() for _ in range(10)}
266+
267+
for value in value_set:
268+
tree.add(AABB([(0, 1), (0, 1)]), value=value)
269+
270+
retrieved_value_set = set(tree.overlap_values(AABB([(0, 2), (0, 2)]), unique=False))
271+
assert retrieved_value_set == value_set
272+
273+
260274
def test_depth():
261275
assert AABBTree().depth == 0
262276
assert standard_tree().depth == 2

0 commit comments

Comments
 (0)