fastquadtree 0.9.0__tar.gz → 0.9.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/Cargo.lock +1 -1
  2. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/Cargo.toml +1 -1
  3. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/PKG-INFO +1 -1
  4. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/pysrc/fastquadtree/pyqtree.py +14 -10
  5. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/.github/workflows/docs.yml +0 -0
  6. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/.github/workflows/release.yml +0 -0
  7. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/.gitignore +0 -0
  8. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/.pre-commit-config.yaml +0 -0
  9. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/LICENSE +0 -0
  10. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/README.md +0 -0
  11. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/assets/ballpit.png +0 -0
  12. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/assets/interactive_v2_rect_screenshot.png +0 -0
  13. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/assets/interactive_v2_screenshot.png +0 -0
  14. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/assets/quadtree_bench_throughput.png +0 -0
  15. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/assets/quadtree_bench_time.png +0 -0
  16. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/benchmarks/benchmark_native_vs_shim.py +0 -0
  17. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/benchmarks/cross_library_bench.py +0 -0
  18. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/benchmarks/quadtree_bench/__init__.py +0 -0
  19. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/benchmarks/quadtree_bench/engines.py +0 -0
  20. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/benchmarks/quadtree_bench/main.py +0 -0
  21. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/benchmarks/quadtree_bench/plotting.py +0 -0
  22. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/benchmarks/quadtree_bench/runner.py +0 -0
  23. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/benchmarks/requirements.txt +0 -0
  24. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/benchmarks/runner.py +0 -0
  25. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/benchmarks/system_info_collector.py +0 -0
  26. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/docs/api/point_item.md +0 -0
  27. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/docs/api/quadtree.md +0 -0
  28. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/docs/api/rect_item.md +0 -0
  29. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/docs/api/rect_quadtree.md +0 -0
  30. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/docs/benchmark.md +0 -0
  31. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/docs/index.md +0 -0
  32. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/docs/quickstart.md +0 -0
  33. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/docs/runnables.md +0 -0
  34. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/interactive/ballpit.py +0 -0
  35. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/interactive/interactive.py +0 -0
  36. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/interactive/interactive_v2.py +0 -0
  37. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/interactive/interactive_v2_rect.py +0 -0
  38. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/interactive/requirements.txt +0 -0
  39. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/mkdocs.yml +0 -0
  40. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/pyproject.toml +0 -0
  41. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/pysrc/fastquadtree/__init__.py +0 -0
  42. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/pysrc/fastquadtree/_base_quadtree.py +0 -0
  43. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/pysrc/fastquadtree/_bimap.py +0 -0
  44. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/pysrc/fastquadtree/_item.py +0 -0
  45. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/pysrc/fastquadtree/point_quadtree.py +0 -0
  46. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/pysrc/fastquadtree/py.typed +0 -0
  47. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/pysrc/fastquadtree/rect_quadtree.py +0 -0
  48. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/src/geom.rs +0 -0
  49. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/src/lib.rs +0 -0
  50. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/src/quadtree.rs +0 -0
  51. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/src/rect_quadtree.rs +0 -0
  52. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/tests/insertions.rs +0 -0
  53. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/tests/nearest_neighbor.rs +0 -0
  54. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/tests/query.rs +0 -0
  55. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/tests/rect_quadtree.rs +0 -0
  56. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/tests/rectangle_traversal.rs +0 -0
  57. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/tests/test_bimap.py +0 -0
  58. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/tests/test_clear.py +0 -0
  59. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/tests/test_delete.rs +0 -0
  60. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/tests/test_delete_by_object.py +0 -0
  61. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/tests/test_delete_python.py +0 -0
  62. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/tests/test_pyqtree_shim_compat.py +0 -0
  63. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/tests/test_python.py +0 -0
  64. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/tests/test_rect_quadtree.py +0 -0
  65. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/tests/test_unconventional_bounds.py +0 -0
  66. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/tests/test_wrapper_edges.py +0 -0
  67. {fastquadtree-0.9.0 → fastquadtree-0.9.1}/tests/unconventional_bounds.rs +0 -0
@@ -10,7 +10,7 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
10
10
 
11
11
  [[package]]
12
12
  name = "fastquadtree"
13
- version = "0.9.0"
13
+ version = "0.9.1"
14
14
  dependencies = [
15
15
  "pyo3",
16
16
  "smallvec",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "fastquadtree"
3
- version = "0.9.0"
3
+ version = "0.9.1"
4
4
  edition = "2021"
5
5
  readme = "README.md"
6
6
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastquadtree
3
- Version: 0.9.0
3
+ Version: 0.9.1
4
4
  Classifier: Programming Language :: Python :: 3
5
5
  Classifier: Programming Language :: Python :: 3 :: Only
6
6
  Classifier: Programming Language :: Rust
@@ -7,7 +7,7 @@ from __future__ import annotations
7
7
 
8
8
  from typing import Any, Tuple
9
9
 
10
- from .rect_quadtree import RectQuadTree
10
+ from ._native import RectQuadTree
11
11
 
12
12
  Point = Tuple[float, float] # only for type hints in docstrings
13
13
 
@@ -71,18 +71,15 @@ class Index:
71
71
  """
72
72
  if bbox is not None:
73
73
  x1, y1, x2, y2 = bbox
74
- self.rect_quadtree = RectQuadTree(
75
- (x1, y1, x2, y2), max_items, max_depth=max_depth, track_objects=True
76
- )
74
+ self._qt = RectQuadTree((x1, y1, x2, y2), max_items, max_depth=max_depth)
77
75
 
78
76
  elif (
79
77
  x is not None and y is not None and width is not None and height is not None
80
78
  ):
81
- self.rect_quadtree = RectQuadTree(
79
+ self._qt = RectQuadTree(
82
80
  (x - width / 2, y - height / 2, x + width / 2, y + height / 2),
83
81
  max_items,
84
82
  max_depth=max_depth,
85
- track_objects=True,
86
83
  )
87
84
 
88
85
  else:
@@ -90,6 +87,8 @@ class Index:
90
87
  "Either the bbox argument must be set, or the x, y, width, and height arguments must be set"
91
88
  )
92
89
 
90
+ self._id_to_obj: dict[int, Any] = {}
91
+
93
92
  def insert(self, item: Any, bbox): # pyright: ignore[reportIncompatibleMethodOverride]
94
93
  """
95
94
  Inserts an item into the quadtree along with its bounding box.
@@ -98,7 +97,8 @@ class Index:
98
97
  - **item**: The item to insert into the index, which will be returned by the intersection method
99
98
  - **bbox**: The spatial bounding box tuple of the item, with four members (xmin,ymin,xmax,ymax)
100
99
  """
101
- self.rect_quadtree.insert(geom=bbox, obj=item)
100
+ self._id_to_obj[id(item)] = item
101
+ self._qt.insert(id(item), bbox)
102
102
 
103
103
  def remove(self, item, bbox):
104
104
  """
@@ -110,7 +110,10 @@ class Index:
110
110
 
111
111
  Both parameters need to exactly match the parameters provided to the insert method.
112
112
  """
113
- self.rect_quadtree.delete_by_object(obj=item)
113
+ self._qt.delete(id(item), bbox)
114
+
115
+ # Pops
116
+ self._id_to_obj.pop(id(item), None)
114
117
 
115
118
  def intersect(self, bbox):
116
119
  """
@@ -123,5 +126,6 @@ class Index:
123
126
  Returns:
124
127
  - A list of inserted items whose bounding boxes intersect with the input bbox.
125
128
  """
126
- out = list(self.rect_quadtree.query(bbox, as_items=True))
127
- return [item.obj for item in out]
129
+ results = self._qt.query(bbox)
130
+ # result = (id, x0, y0, x1, y1)
131
+ return [self._id_to_obj[result[0]] for result in results]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes