fastquadtree 1.1.1__tar.gz → 1.1.2__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.

Potentially problematic release.


This version of fastquadtree might be problematic. Click here for more details.

Files changed (74) hide show
  1. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/Cargo.lock +1 -1
  2. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/Cargo.toml +1 -1
  3. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/PKG-INFO +1 -1
  4. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/pysrc/fastquadtree/pyqtree.py +6 -0
  5. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/tests/test_pyqtree_shim_compat.py +39 -0
  6. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/.github/workflows/docs.yml +0 -0
  7. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/.github/workflows/release.yml +0 -0
  8. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/.gitignore +0 -0
  9. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/.pre-commit-config.yaml +0 -0
  10. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/LICENSE +0 -0
  11. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/README.md +0 -0
  12. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/assets/ballpit.png +0 -0
  13. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/assets/interactive_v2_rect_screenshot.png +0 -0
  14. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/assets/interactive_v2_screenshot.png +0 -0
  15. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/assets/quadtree_bench_throughput.png +0 -0
  16. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/assets/quadtree_bench_time.png +0 -0
  17. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/benchmarks/benchmark_native_vs_shim.py +0 -0
  18. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/benchmarks/benchmark_np_vs_list.py +0 -0
  19. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/benchmarks/cross_library_bench.py +0 -0
  20. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/benchmarks/quadtree_bench/__init__.py +0 -0
  21. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/benchmarks/quadtree_bench/engines.py +0 -0
  22. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/benchmarks/quadtree_bench/main.py +0 -0
  23. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/benchmarks/quadtree_bench/plotting.py +0 -0
  24. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/benchmarks/quadtree_bench/runner.py +0 -0
  25. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/benchmarks/requirements.txt +0 -0
  26. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/benchmarks/runner.py +0 -0
  27. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/benchmarks/system_info_collector.py +0 -0
  28. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/docs/api/point_item.md +0 -0
  29. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/docs/api/pyqtree.md +0 -0
  30. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/docs/api/quadtree.md +0 -0
  31. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/docs/api/rect_item.md +0 -0
  32. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/docs/api/rect_quadtree.md +0 -0
  33. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/docs/benchmark.md +0 -0
  34. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/docs/future_features.md +0 -0
  35. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/docs/index.md +0 -0
  36. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/docs/quickstart.md +0 -0
  37. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/docs/runnables.md +0 -0
  38. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/docs/styles/overrides.css +0 -0
  39. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/interactive/ballpit.py +0 -0
  40. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/interactive/interactive.py +0 -0
  41. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/interactive/interactive_v2.py +0 -0
  42. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/interactive/interactive_v2_rect.py +0 -0
  43. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/interactive/requirements.txt +0 -0
  44. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/mkdocs.yml +0 -0
  45. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/pyproject.toml +0 -0
  46. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/pysrc/fastquadtree/__init__.py +0 -0
  47. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/pysrc/fastquadtree/_base_quadtree.py +0 -0
  48. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/pysrc/fastquadtree/_item.py +0 -0
  49. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/pysrc/fastquadtree/_obj_store.py +0 -0
  50. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/pysrc/fastquadtree/point_quadtree.py +0 -0
  51. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/pysrc/fastquadtree/py.typed +0 -0
  52. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/pysrc/fastquadtree/rect_quadtree.py +0 -0
  53. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/src/geom.rs +0 -0
  54. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/src/lib.rs +0 -0
  55. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/src/quadtree.rs +0 -0
  56. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/src/rect_quadtree.rs +0 -0
  57. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/tests/insertions.rs +0 -0
  58. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/tests/nearest_neighbor.rs +0 -0
  59. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/tests/query.rs +0 -0
  60. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/tests/rect_quadtree.rs +0 -0
  61. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/tests/rectangle_traversal.rs +0 -0
  62. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/tests/test_base_quadtree.py +0 -0
  63. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/tests/test_clear.py +0 -0
  64. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/tests/test_delete.rs +0 -0
  65. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/tests/test_delete_by_object.py +0 -0
  66. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/tests/test_delete_python.py +0 -0
  67. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/tests/test_insert_many_numpy.py +0 -0
  68. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/tests/test_obj_store.py +0 -0
  69. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/tests/test_point_quadtree_nn_runtime.py +0 -0
  70. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/tests/test_python.py +0 -0
  71. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/tests/test_rect_quadtree.py +0 -0
  72. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/tests/test_unconventional_bounds.py +0 -0
  73. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/tests/test_wrapper_edges.py +0 -0
  74. {fastquadtree-1.1.1 → fastquadtree-1.1.2}/tests/unconventional_bounds.rs +0 -0
@@ -10,7 +10,7 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
10
10
 
11
11
  [[package]]
12
12
  name = "fastquadtree"
13
- version = "1.1.1"
13
+ version = "1.1.2"
14
14
  dependencies = [
15
15
  "numpy",
16
16
  "pyo3",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "fastquadtree"
3
- version = "1.1.1"
3
+ version = "1.1.2"
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: 1.1.1
3
+ Version: 1.1.2
4
4
  Classifier: Programming Language :: Python :: 3
5
5
  Classifier: Programming Language :: Python :: 3 :: Only
6
6
  Classifier: Programming Language :: Rust
@@ -122,6 +122,9 @@ class Index:
122
122
  - **item**: The item to insert into the index, which will be returned by the intersection method
123
123
  - **bbox**: The spatial bounding box tuple of the item, with four members (xmin,ymin,xmax,ymax)
124
124
  """
125
+ if type(bbox) is list: # Handle list input
126
+ bbox = tuple(bbox)
127
+
125
128
  if self._free:
126
129
  rid = self._free.pop()
127
130
  self._objects[rid] = item
@@ -141,6 +144,9 @@ class Index:
141
144
 
142
145
  Both parameters need to exactly match the parameters provided to the insert method.
143
146
  """
147
+ if type(bbox) is list: # Handle list input
148
+ bbox = tuple(bbox)
149
+
144
150
  rid = self._item_to_id.pop(id(item))
145
151
  self._qt.delete(rid, bbox)
146
152
  self._objects[rid] = None
@@ -362,3 +362,42 @@ def test_query_list_and_tuple_equivalence():
362
362
  results_from_list = idx.intersect(query_list)
363
363
 
364
364
  assert results_from_tuple == results_from_list == [obj1]
365
+
366
+
367
+ def test_remove_list_and_tuple_equivalence():
368
+ """Test that both list and tuple inputs for bbox work the same in remove."""
369
+ idx = FQTIndex(bbox=WORLD)
370
+
371
+ obj1, box1 = "obj1", (10.0, 10.0, 20.0, 20.0)
372
+ obj2, box2 = "obj2", (30.0, 30.0, 40.0, 40.0)
373
+
374
+ idx.insert(obj1, box1)
375
+ idx.insert(obj2, box2)
376
+
377
+ # Remove using tuple
378
+ idx.remove(obj1, box1)
379
+
380
+ # Remove using list
381
+ box2_list = [30.0, 30.0, 40.0, 40.0]
382
+ idx.remove(obj2, box2_list)
383
+
384
+ # Both objects should be removed
385
+ assert idx.intersect((0.0, 0.0, 100.0, 100.0)) == []
386
+
387
+
388
+ def test_insert_list_and_tuple_equivalence():
389
+ """Test that both list and tuple inputs for bbox work the same in insert."""
390
+ idx = FQTIndex(bbox=WORLD)
391
+
392
+ obj1, box1 = "obj1", (10.0, 10.0, 20.0, 20.0)
393
+ obj2, box2 = "obj2", [30.0, 30.0, 40.0, 40.0] # box2 as list
394
+
395
+ # Insert using tuple
396
+ idx.insert(obj1, box1)
397
+
398
+ # Insert using list
399
+ idx.insert(obj2, box2)
400
+
401
+ # Both objects should be present
402
+ results = idx.intersect((0.0, 0.0, 100.0, 100.0))
403
+ assert set(results) == {obj1, obj2}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes