fastquadtree 2.0.2__tar.gz → 2.0.3__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 (109) hide show
  1. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/.github/workflows/release.yml +4 -6
  2. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/.github/workflows/test.yml +1 -1
  3. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/Cargo.lock +1 -1
  4. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/Cargo.toml +1 -1
  5. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/PKG-INFO +4 -5
  6. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/README.md +1 -2
  7. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/docs/benchmark.md +1 -1
  8. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/pyproject.toml +1 -1
  9. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/pysrc/fastquadtree/_base_quadtree.py +3 -3
  10. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/pysrc/fastquadtree/_base_quadtree_objects.py +3 -3
  11. fastquadtree-2.0.3/tests/test_python/points/test_point_quadtree_precision.py +47 -0
  12. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/.github/workflows/docs.yml +0 -0
  13. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/.gitignore +0 -0
  14. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/.pre-commit-config.yaml +0 -0
  15. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/LICENSE +0 -0
  16. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/assets/ballpit.png +0 -0
  17. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/assets/interactive_v2_rect_screenshot.png +0 -0
  18. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/assets/interactive_v2_screenshot.png +0 -0
  19. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/assets/quadtree_bench_throughput.png +0 -0
  20. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/assets/quadtree_bench_time.png +0 -0
  21. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/benchmarks/benchmark_native_vs_shim.py +0 -0
  22. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/benchmarks/benchmark_np_vs_list.py +0 -0
  23. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/benchmarks/benchmark_serialization_vs_rebuild.py +0 -0
  24. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/benchmarks/cross_library_bench.py +0 -0
  25. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/benchmarks/quadtree_bench/__init__.py +0 -0
  26. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/benchmarks/quadtree_bench/engines.py +0 -0
  27. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/benchmarks/quadtree_bench/main.py +0 -0
  28. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/benchmarks/quadtree_bench/optimizer.py +0 -0
  29. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/benchmarks/quadtree_bench/plotting.py +0 -0
  30. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/benchmarks/quadtree_bench/runner.py +0 -0
  31. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/benchmarks/requirements.txt +0 -0
  32. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/benchmarks/runner.py +0 -0
  33. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/benchmarks/system_info_collector.py +0 -0
  34. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/docs/2.0_migration_guide.md +0 -0
  35. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/docs/2.0_proposal.md +0 -0
  36. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/docs/api/insert_result.md +0 -0
  37. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/docs/api/item.md +0 -0
  38. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/docs/api/point_item.md +0 -0
  39. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/docs/api/pyqtree.md +0 -0
  40. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/docs/api/quadtree.md +0 -0
  41. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/docs/api/quadtree_objects.md +0 -0
  42. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/docs/api/rect_item.md +0 -0
  43. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/docs/api/rect_quadtree.md +0 -0
  44. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/docs/api/rect_quadtree_objects.md +0 -0
  45. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/docs/future_features.md +0 -0
  46. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/docs/index.md +0 -0
  47. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/docs/quickstart.md +0 -0
  48. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/docs/runnables.md +0 -0
  49. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/docs/rust_usage.md +0 -0
  50. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/docs/styles/overrides.css +0 -0
  51. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/examples/custom_id_example.py +0 -0
  52. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/examples/object_tracking_example.py +0 -0
  53. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/interactive/ballpit.py +0 -0
  54. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/interactive/interactive.py +0 -0
  55. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/interactive/interactive_v2.py +0 -0
  56. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/interactive/interactive_v2_rect.py +0 -0
  57. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/interactive/requirements.txt +0 -0
  58. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/mkdocs.yml +0 -0
  59. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/pyrightconfig.json +0 -0
  60. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/pysrc/fastquadtree/__init__.py +0 -0
  61. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/pysrc/fastquadtree/_common.py +0 -0
  62. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/pysrc/fastquadtree/_insert_result.py +0 -0
  63. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/pysrc/fastquadtree/_item.py +0 -0
  64. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/pysrc/fastquadtree/_obj_store.py +0 -0
  65. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/pysrc/fastquadtree/point_quadtree.py +0 -0
  66. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/pysrc/fastquadtree/point_quadtree_objects.py +0 -0
  67. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/pysrc/fastquadtree/py.typed +0 -0
  68. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/pysrc/fastquadtree/pyqtree.py +0 -0
  69. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/pysrc/fastquadtree/rect_quadtree.py +0 -0
  70. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/pysrc/fastquadtree/rect_quadtree_objects.py +0 -0
  71. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/src/geom.rs +0 -0
  72. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/src/lib.rs +0 -0
  73. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/src/quadtree.rs +0 -0
  74. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/src/rect_quadtree.rs +0 -0
  75. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/__init__.py +0 -0
  76. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/insertions.rs +0 -0
  77. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/nearest_neighbor.rs +0 -0
  78. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/query.rs +0 -0
  79. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/rect_quadtree.rs +0 -0
  80. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/rectangle_traversal.rs +0 -0
  81. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/serialization.rs +0 -0
  82. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_delete.rs +0 -0
  83. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/__init__.py +0 -0
  84. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/common/test_common_validation.py +0 -0
  85. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/common/test_insert_result_and_items.py +0 -0
  86. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/common/test_internal_edges.py +0 -0
  87. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/common/test_obj_store.py +0 -0
  88. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/common/test_serialization_container.py +0 -0
  89. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/conftest.py +0 -0
  90. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/integration/test_migration_breaks_and_safety.py +0 -0
  91. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/integration/test_public_api_contracts.py +0 -0
  92. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/points/test_point_quadtree_core.py +0 -0
  93. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/points/test_point_quadtree_mutation.py +0 -0
  94. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/points/test_point_quadtree_numpy.py +0 -0
  95. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/points/test_point_quadtree_serialization.py +0 -0
  96. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/points_objects/test_point_quadtree_objects_core.py +0 -0
  97. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/points_objects/test_point_quadtree_objects_deletion_update.py +0 -0
  98. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/points_objects/test_point_quadtree_objects_numpy.py +0 -0
  99. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/points_objects/test_point_quadtree_objects_serialization.py +0 -0
  100. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/rects/test_rect_quadtree_core.py +0 -0
  101. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/rects/test_rect_quadtree_mutation.py +0 -0
  102. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/rects/test_rect_quadtree_numpy.py +0 -0
  103. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/rects/test_rect_quadtree_serialization.py +0 -0
  104. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/rects_objects/test_rect_quadtree_objects_core.py +0 -0
  105. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/rects_objects/test_rect_quadtree_objects_deletion_update.py +0 -0
  106. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/rects_objects/test_rect_quadtree_objects_numpy.py +0 -0
  107. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/rects_objects/test_rect_quadtree_objects_serialization.py +0 -0
  108. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/test_python/test_pyqtree_shim_compat.py +0 -0
  109. {fastquadtree-2.0.2 → fastquadtree-2.0.3}/tests/unconventional_bounds.rs +0 -0
@@ -26,7 +26,7 @@ jobs:
26
26
  with:
27
27
  command: develop
28
28
  args: --release
29
- manylinux: manylinux2014
29
+ manylinux: 2_28
30
30
 
31
31
  - name: Install Python test deps into .venv
32
32
  run: |
@@ -64,12 +64,10 @@ jobs:
64
64
  args: "--skip-existing"
65
65
  # Linux aarch64 abi3
66
66
  - os: ubuntu-latest
67
- target: "aarch64-unknown-linux-gnu"
68
- args: "--skip-existing --target aarch64-unknown-linux-gnu --zig"
67
+ args: "--skip-existing --target aarch64-unknown-linux-gnu"
69
68
  # Linux armv7 abi3
70
69
  - os: ubuntu-latest
71
- target: "armv7-unknown-linux-gnueabihf"
72
- args: "--skip-existing --target armv7-unknown-linux-gnueabihf --zig"
70
+ args: "--skip-existing --target armv7-unknown-linux-gnueabihf"
73
71
  steps:
74
72
  - uses: actions/checkout@v4
75
73
  - uses: actions/setup-python@v5
@@ -82,4 +80,4 @@ jobs:
82
80
  with:
83
81
  command: publish
84
82
  args: ${{ matrix.args }}
85
- manylinux: manylinux2014
83
+ manylinux: 2_28
@@ -36,7 +36,7 @@ jobs:
36
36
  with:
37
37
  command: develop
38
38
  args: --release
39
- manylinux: manylinux2014
39
+ manylinux: 2_28
40
40
 
41
41
  - name: Install Python test deps into .venv
42
42
  run: |
@@ -30,7 +30,7 @@ dependencies = [
30
30
 
31
31
  [[package]]
32
32
  name = "fastquadtree"
33
- version = "2.0.2"
33
+ version = "2.0.3"
34
34
  dependencies = [
35
35
  "bincode",
36
36
  "num-traits",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "fastquadtree"
3
- version = "2.0.2"
3
+ version = "2.0.3"
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: 2.0.2
3
+ Version: 2.0.3
4
4
  Classifier: Programming Language :: Python :: 3
5
5
  Classifier: Programming Language :: Python :: 3 :: Only
6
6
  Classifier: Programming Language :: Rust
@@ -34,10 +34,10 @@ Keywords: quadtree,spatial-index,geometry,rust,pyo3,nearest-neighbor,k-nn
34
34
  Author: Ethan Anderson
35
35
  Requires-Python: >=3.9
36
36
  Description-Content-Type: text/markdown
37
- Project-URL: Homepage, https://github.com/Elan456/fastquadtree
38
- Project-URL: Repository, https://github.com/Elan456/fastquadtree
39
37
  Project-URL: Documentation, https://elan456.github.io/fastquadtree/
38
+ Project-URL: Homepage, https://github.com/Elan456/fastquadtree
40
39
  Project-URL: Issues, https://github.com/Elan456/fastquadtree/issues
40
+ Project-URL: Repository, https://github.com/Elan456/fastquadtree
41
41
 
42
42
  # fastquadtree
43
43
 
@@ -113,9 +113,8 @@ fastquadtree **outperforms** all other quadtree Python packages, including the R
113
113
  ![Total time](https://raw.githubusercontent.com/Elan456/fastquadtree/main/assets/quadtree_bench_time.png)
114
114
  ![Throughput](https://raw.githubusercontent.com/Elan456/fastquadtree/main/assets/quadtree_bench_throughput.png)
115
115
 
116
- ### Summary (largest dataset, PyQtree baseline)
116
+ ### Summary (PyQtree baseline, sorted by total time)
117
117
  - Points: **500,000**, Queries: **500**
118
- - Fastest total: **fastquadtree** at **0.067 s**
119
118
 
120
119
  | Library | Build (s) | Query (s) | Total (s) | Speed vs PyQtree |
121
120
  |---|---:|---:|---:|---:|
@@ -72,9 +72,8 @@ fastquadtree **outperforms** all other quadtree Python packages, including the R
72
72
  ![Total time](https://raw.githubusercontent.com/Elan456/fastquadtree/main/assets/quadtree_bench_time.png)
73
73
  ![Throughput](https://raw.githubusercontent.com/Elan456/fastquadtree/main/assets/quadtree_bench_throughput.png)
74
74
 
75
- ### Summary (largest dataset, PyQtree baseline)
75
+ ### Summary (PyQtree baseline, sorted by total time)
76
76
  - Points: **500,000**, Queries: **500**
77
- - Fastest total: **fastquadtree** at **0.067 s**
78
77
 
79
78
  | Library | Build (s) | Query (s) | Total (s) | Speed vs PyQtree |
80
79
  |---|---:|---:|---:|---:|
@@ -12,7 +12,7 @@ Quadtrees are the focus of the benchmark, but Rtrees are included for reference.
12
12
 
13
13
  ### Summary (largest dataset, PyQtree baseline)
14
14
  - Points: **500,000**, Queries: **500**
15
- - Fastest total: **fastquadtree** at **0.089 s**
15
+ - Fastest total: **fastquadtree** at **0.078 s**
16
16
 
17
17
  | Library | Build (s) | Query (s) | Total (s) | Speed vs PyQtree |
18
18
  |---|---:|---:|---:|---:|
@@ -40,7 +40,7 @@ python-source = "pysrc"
40
40
  module-name = "fastquadtree._native"
41
41
  # Choose a wide wheel tag for Linux. Adjust if your build images are newer.
42
42
  # Options include: manylinux2014, manylinux_2_28, musllinux_1_2, or "off".
43
- compatibility = "manylinux2014"
43
+ compatibility = "manylinux_2_28"
44
44
 
45
45
  [tool.pytest.ini_options]
46
46
  addopts = [
@@ -4,7 +4,7 @@
4
4
  from __future__ import annotations
5
5
 
6
6
  from abc import ABC, abstractmethod
7
- from typing import Any, Generic, TypeVar
7
+ from typing import Any, Generic, Sequence, TypeVar
8
8
 
9
9
  from ._common import (
10
10
  SERIALIZATION_FORMAT_VERSION,
@@ -114,7 +114,7 @@ class _BaseQuadTree(Generic[G], ABC):
114
114
  self._count += 1
115
115
  return id_
116
116
 
117
- def insert_many(self, geoms: list[G]) -> InsertResult:
117
+ def insert_many(self, geoms: Sequence[G]) -> InsertResult:
118
118
  """
119
119
  Bulk insert geometries with auto-assigned contiguous IDs. <br>
120
120
  IDs start at 0 and increment by 1, so they will be aligned with the indexes of the input list if the tree started empty. <br>
@@ -123,7 +123,7 @@ class _BaseQuadTree(Generic[G], ABC):
123
123
  calls if you need custom IDs.
124
124
 
125
125
  Args:
126
- geoms: List of geometries.
126
+ geoms: Sequence of geometries.
127
127
 
128
128
  Returns:
129
129
  InsertResult with count, start_id, and end_id.
@@ -5,7 +5,7 @@ from __future__ import annotations
5
5
 
6
6
  import pickle
7
7
  from abc import ABC, abstractmethod
8
- from typing import Any, Generic, TypeVar
8
+ from typing import Any, Generic, Sequence, TypeVar
9
9
 
10
10
  from ._common import (
11
11
  SECTION_ITEMS,
@@ -275,7 +275,7 @@ class _BaseQuadTreeObjects(Generic[G, ItemType], ABC):
275
275
  return rid
276
276
 
277
277
  def insert_many(
278
- self, geoms: list[G], objs: list[Any] | None = None
278
+ self, geoms: Sequence[G], objs: list[Any] | None = None
279
279
  ) -> InsertResult:
280
280
  """
281
281
  Bulk insert geometries with auto-assigned contiguous IDs.
@@ -285,7 +285,7 @@ class _BaseQuadTreeObjects(Generic[G, ItemType], ABC):
285
285
  IDs from the free-list created by deletions. Use insert() to fill holes.
286
286
 
287
287
  Args:
288
- geoms: List of geometries.
288
+ geoms: Sequence of geometries.
289
289
  objs: Optional list of Python objects aligned with geoms.
290
290
 
291
291
  Returns:
@@ -0,0 +1,47 @@
1
+ import numpy as np
2
+ import pytest
3
+
4
+ from fastquadtree.point_quadtree import QuadTree
5
+
6
+
7
+ def test_f32_containment():
8
+ bounds = (0.0, 0.0, 1000.0, 1000.0)
9
+ qt = QuadTree(bounds, capacity=4, dtype="f32")
10
+ pts = [
11
+ (50, 50),
12
+ (100, 100),
13
+ (150, 150),
14
+ (200, 200),
15
+ (350.0, 260.0),
16
+ ]
17
+ qt.insert_many(pts)
18
+
19
+ got = qt.query((50.0, 50.0, 51.0, 51.0))
20
+ assert len(got) == 1
21
+
22
+ got = qt.query((350.0, 260.0, 351.0, 261.0))
23
+ assert len(got) == 1
24
+
25
+
26
+ def test_f32_can_round_bbox_min_up_and_exclude_integer_point():
27
+ offset = 1e8
28
+ x = 261.0 # integer point, exactly representable in f32 and f64
29
+
30
+ # Simulate "world -> local" by subtracting a large origin.
31
+ # In float32, this suffers catastrophic cancellation and rounds to a multiple of 8 here.
32
+ min_x32 = np.float32(offset + x) - np.float32(offset) # typically becomes 264.0
33
+ min_x64 = np.float64(offset + x) - np.float64(offset) # stays 261.0
34
+
35
+ assert float(min_x64) == x
36
+ assert float(min_x32) != x # demonstrates the f32 rounding drift
37
+
38
+ # BBox that "should" start at x, but in f32 it starts at 264 and excludes x=261
39
+ bbox64 = (float(min_x64), 0.0, float(min_x64) + 10.0, 10.0)
40
+ bbox32 = (float(min_x32), 0.0, float(min_x32) + 10.0, 10.0)
41
+
42
+ qt64 = QuadTree(bbox64, 1, max_depth=8, dtype="f64")
43
+ qt64.insert((x, 5.0)) # should succeed
44
+
45
+ qt32 = QuadTree(bbox32, 1, max_depth=8, dtype="f32")
46
+ with pytest.raises(ValueError):
47
+ qt32.insert((np.float32(x), np.float32(5.0))) # should fail (x < min_x32)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes