fastquadtree 2.4.1__tar.gz → 2.4.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.
Files changed (117) hide show
  1. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/.github/workflows/release.yml +28 -16
  2. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/.gitignore +2 -1
  3. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/Cargo.lock +1 -1
  4. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/Cargo.toml +1 -1
  5. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/PKG-INFO +1 -1
  6. fastquadtree-2.4.2/scripts/build_pyodide_wheel.sh +77 -0
  7. fastquadtree-2.4.1/scripts/build_pyodide_wheel.sh +0 -49
  8. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/.github/workflows/docs.yml +0 -0
  9. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/.github/workflows/test.yml +0 -0
  10. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/.pre-commit-config.yaml +0 -0
  11. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/LICENSE +0 -0
  12. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/README.md +0 -0
  13. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/assets/ballpit.png +0 -0
  14. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/assets/interactive_v2_rect_screenshot.png +0 -0
  15. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/assets/interactive_v2_screenshot.png +0 -0
  16. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/assets/pygame_sprites_demo.png +0 -0
  17. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/assets/quadtree_bench_throughput.png +0 -0
  18. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/assets/quadtree_bench_time.png +0 -0
  19. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/benchmarks/benchmark_native_vs_shim.py +0 -0
  20. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/benchmarks/benchmark_np_vs_list.py +0 -0
  21. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/benchmarks/benchmark_serialization_vs_rebuild.py +0 -0
  22. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/benchmarks/cross_library_bench.py +0 -0
  23. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/benchmarks/quadtree_bench/__init__.py +0 -0
  24. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/benchmarks/quadtree_bench/engines.py +0 -0
  25. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/benchmarks/quadtree_bench/main.py +0 -0
  26. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/benchmarks/quadtree_bench/optimizer.py +0 -0
  27. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/benchmarks/quadtree_bench/plotting.py +0 -0
  28. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/benchmarks/quadtree_bench/runner.py +0 -0
  29. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/benchmarks/runner.py +0 -0
  30. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/benchmarks/system_info_collector.py +0 -0
  31. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/docs/2.0_migration_guide.md +0 -0
  32. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/docs/2.0_proposal.md +0 -0
  33. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/docs/api/insert_result.md +0 -0
  34. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/docs/api/item.md +0 -0
  35. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/docs/api/point_item.md +0 -0
  36. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/docs/api/pygame.md +0 -0
  37. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/docs/api/pyqtree.md +0 -0
  38. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/docs/api/quadtree.md +0 -0
  39. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/docs/api/quadtree_objects.md +0 -0
  40. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/docs/api/rect_item.md +0 -0
  41. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/docs/api/rect_quadtree.md +0 -0
  42. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/docs/api/rect_quadtree_objects.md +0 -0
  43. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/docs/benchmark.md +0 -0
  44. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/docs/engine_defaults.md +0 -0
  45. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/docs/future_features.md +0 -0
  46. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/docs/index.md +0 -0
  47. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/docs/quickstart.md +0 -0
  48. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/docs/runnables.md +0 -0
  49. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/docs/rust_usage.md +0 -0
  50. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/docs/styles/overrides.css +0 -0
  51. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/examples/custom_id_example.py +0 -0
  52. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/examples/object_tracking_example.py +0 -0
  53. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/interactive/ballpit.py +0 -0
  54. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/interactive/interactive.py +0 -0
  55. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/interactive/interactive_v2.py +0 -0
  56. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/interactive/interactive_v2_rect.py +0 -0
  57. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/interactive/pygame_sprites.py +0 -0
  58. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/mkdocs.yml +0 -0
  59. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/pyproject.toml +0 -0
  60. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/pyrightconfig.json +0 -0
  61. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/pysrc/fastquadtree/__init__.py +0 -0
  62. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/pysrc/fastquadtree/_base_quadtree.py +0 -0
  63. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/pysrc/fastquadtree/_base_quadtree_objects.py +0 -0
  64. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/pysrc/fastquadtree/_common.py +0 -0
  65. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/pysrc/fastquadtree/_insert_result.py +0 -0
  66. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/pysrc/fastquadtree/_item.py +0 -0
  67. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/pysrc/fastquadtree/_obj_store.py +0 -0
  68. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/pysrc/fastquadtree/point_quadtree.py +0 -0
  69. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/pysrc/fastquadtree/point_quadtree_objects.py +0 -0
  70. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/pysrc/fastquadtree/py.typed +0 -0
  71. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/pysrc/fastquadtree/pygame.py +0 -0
  72. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/pysrc/fastquadtree/pyqtree.py +0 -0
  73. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/pysrc/fastquadtree/rect_quadtree.py +0 -0
  74. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/pysrc/fastquadtree/rect_quadtree_objects.py +0 -0
  75. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/src/geom.rs +0 -0
  76. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/src/lib.rs +0 -0
  77. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/src/quadtree.rs +0 -0
  78. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/src/rect_quadtree.rs +0 -0
  79. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/src/serialization.rs +0 -0
  80. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/__init__.py +0 -0
  81. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/insertions.rs +0 -0
  82. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/nearest_neighbor.rs +0 -0
  83. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/query.rs +0 -0
  84. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/rect_quadtree.rs +0 -0
  85. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/rectangle_traversal.rs +0 -0
  86. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/serialization.rs +0 -0
  87. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_delete.rs +0 -0
  88. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/__init__.py +0 -0
  89. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/common/test_common_validation.py +0 -0
  90. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/common/test_insert_result_and_items.py +0 -0
  91. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/common/test_internal_edges.py +0 -0
  92. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/common/test_obj_store.py +0 -0
  93. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/common/test_serialization_container.py +0 -0
  94. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/conftest.py +0 -0
  95. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/integration/test_migration_breaks_and_safety.py +0 -0
  96. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/integration/test_optional_pygame_dependency.py +0 -0
  97. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/integration/test_public_api_contracts.py +0 -0
  98. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/integration/test_pygame_integration.py +0 -0
  99. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/points/test_point_quadtree_core.py +0 -0
  100. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/points/test_point_quadtree_mutation.py +0 -0
  101. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/points/test_point_quadtree_numpy.py +0 -0
  102. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/points/test_point_quadtree_precision.py +0 -0
  103. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/points/test_point_quadtree_serialization.py +0 -0
  104. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/points_objects/test_point_quadtree_objects_core.py +0 -0
  105. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/points_objects/test_point_quadtree_objects_deletion_update.py +0 -0
  106. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/points_objects/test_point_quadtree_objects_numpy.py +0 -0
  107. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/points_objects/test_point_quadtree_objects_serialization.py +0 -0
  108. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/rects/test_rect_quadtree_core.py +0 -0
  109. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/rects/test_rect_quadtree_mutation.py +0 -0
  110. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/rects/test_rect_quadtree_numpy.py +0 -0
  111. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/rects/test_rect_quadtree_serialization.py +0 -0
  112. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/rects_objects/test_rect_quadtree_objects_core.py +0 -0
  113. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/rects_objects/test_rect_quadtree_objects_deletion_update.py +0 -0
  114. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/rects_objects/test_rect_quadtree_objects_numpy.py +0 -0
  115. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/rects_objects/test_rect_quadtree_objects_serialization.py +0 -0
  116. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/test_python/test_pyqtree_shim_compat.py +0 -0
  117. {fastquadtree-2.4.1 → fastquadtree-2.4.2}/tests/unconventional_bounds.rs +0 -0
@@ -100,49 +100,61 @@ jobs:
100
100
  path: dist/*
101
101
 
102
102
  build_pyodide:
103
- name: Build Pyodide wheel
103
+ name: Build Pyodide wheels
104
104
  needs: test
105
105
  runs-on: ubuntu-latest
106
+ strategy:
107
+ fail-fast: false
108
+ matrix:
109
+ include:
110
+ - label: pyodide-2025
111
+ python_version: "3.13"
112
+ xbuildenv_channel: "nightly"
113
+ xbuildenv_version: "20260401"
114
+ emscripten_version: "4.0.9"
115
+ wheel_glob: "fastquadtree-*-cp39-abi3-pyemscripten_2025_0_wasm32.whl"
116
+ - label: pyodide-2026
117
+ python_version: "3.14"
118
+ xbuildenv_channel: "stable"
119
+ xbuildenv_version: "314.0.0"
120
+ emscripten_version: "5.0.3"
121
+ wheel_glob: "fastquadtree-*-cp39-abi3-pyemscripten_2026_0_wasm32.whl"
106
122
  steps:
107
123
  - uses: actions/checkout@v6
108
124
 
109
125
  - name: Set up Python
110
126
  uses: actions/setup-python@v6
111
127
  with:
112
- python-version: "3.13"
113
-
114
- - name: Set up Node
115
- uses: actions/setup-node@v4
116
- with:
117
- node-version: "24"
128
+ python-version: ${{ matrix.python_version }}
118
129
 
119
130
  - name: Install uv
120
131
  uses: astral-sh/setup-uv@v8.1.0
121
132
  with:
122
133
  enable-cache: true
123
134
 
124
- - name: Install pyodide CLI
125
- run: uv tool install pyodide-cli --with pyodide-build
126
-
127
135
  - name: Cache Pyodide cross-build environment
128
136
  uses: actions/cache@v4
129
137
  with:
130
- path: ~/.cache/fastquadtree-pyodide
131
- key: pyodide-xbuildenv-${{ runner.os }}-20260401-1.93.0
138
+ path: ~/.cache/fastquadtree-${{ matrix.label }}
139
+ key: pyodide-xbuildenv-${{ runner.os }}-${{ matrix.label }}-${{ matrix.xbuildenv_version }}-${{ matrix.emscripten_version }}-rust-1.93.0
132
140
 
133
141
  - name: Build Pyodide wheel
134
142
  env:
135
- PYODIDE_XBUILDENV_ROOT: ~/.cache/fastquadtree-pyodide
136
- PYODIDE_ENV_VERSION: "20260401"
143
+ PYODIDE_HOST_PYTHON: ${{ matrix.python_version }}
144
+ PYODIDE_XBUILDENV_ROOT: ~/.cache/fastquadtree-${{ matrix.label }}
145
+ PYODIDE_XBUILDENV_CHANNEL: ${{ matrix.xbuildenv_channel }}
146
+ PYODIDE_XBUILDENV_VERSION: ${{ matrix.xbuildenv_version }}
147
+ PYODIDE_EMSCRIPTEN_VERSION: ${{ matrix.emscripten_version }}
137
148
  RUST_TOOLCHAIN: "1.93.0"
138
149
  UV_CACHE_DIR: ~/.cache/uv
150
+ PYODIDE_EXPECTED_WHEEL_GLOB: ${{ matrix.wheel_glob }}
139
151
  run: bash scripts/build_pyodide_wheel.sh
140
152
 
141
153
  - name: Upload Pyodide dist artifact
142
154
  uses: actions/upload-artifact@v7
143
155
  with:
144
- name: dist-pyodide
145
- path: dist/*pyemscripten*_wasm32.whl
156
+ name: dist-${{ matrix.label }}
157
+ path: dist/${{ matrix.wheel_glob }}
146
158
 
147
159
  publish:
148
160
  name: Publish distributions to PyPI
@@ -219,4 +219,5 @@ __marimo__/
219
219
  *.lock
220
220
 
221
221
  # pyodide
222
- .pyodide*
222
+ .pyodide*
223
+ .venv-pyodide/
@@ -44,7 +44,7 @@ dependencies = [
44
44
 
45
45
  [[package]]
46
46
  name = "fastquadtree"
47
- version = "2.4.1"
47
+ version = "2.4.2"
48
48
  dependencies = [
49
49
  "num-traits",
50
50
  "numpy",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "fastquadtree"
3
- version = "2.4.1"
3
+ version = "2.4.2"
4
4
  edition = "2021"
5
5
  rust-version = "1.89"
6
6
  readme = "README.md"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastquadtree
3
- Version: 2.4.1
3
+ Version: 2.4.2
4
4
  Classifier: Programming Language :: Python :: 3
5
5
  Classifier: Programming Language :: Python :: 3 :: Only
6
6
  Classifier: Programming Language :: Python :: 3.9
@@ -0,0 +1,77 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
5
+ PYODIDE_HOST_PYTHON="${PYODIDE_HOST_PYTHON:-3.13}"
6
+ PYODIDE_XBUILDENV_VERSION="${PYODIDE_XBUILDENV_VERSION:-20260401}"
7
+ PYODIDE_XBUILDENV_CHANNEL="${PYODIDE_XBUILDENV_CHANNEL:-nightly}"
8
+ PYODIDE_EMSCRIPTEN_VERSION="${PYODIDE_EMSCRIPTEN_VERSION:-4.0.9}"
9
+ PYODIDE_XBUILDENV_ROOT="${PYODIDE_XBUILDENV_ROOT:-${XDG_CACHE_HOME:-$HOME/.cache}/fastquadtree-pyodide}"
10
+ RUST_TOOLCHAIN="${RUST_TOOLCHAIN:-1.93.0}"
11
+ UV_CACHE_DIR="${UV_CACHE_DIR:-${XDG_CACHE_HOME:-$HOME/.cache}/uv}"
12
+ PYODIDE_EXPECTED_WHEEL_GLOB="${PYODIDE_EXPECTED_WHEEL_GLOB:-fastquadtree-*-cp39-abi3-pyemscripten_2025_0_wasm32.whl}"
13
+
14
+ need_cmd() {
15
+ if ! command -v "$1" >/dev/null 2>&1; then
16
+ printf 'Missing required command: %s\n' "$1" >&2
17
+ exit 1
18
+ fi
19
+ }
20
+
21
+ need_cmd uv
22
+ need_cmd rustup
23
+
24
+ printf 'Using Pyodide xbuildenv root: %s\n' "$PYODIDE_XBUILDENV_ROOT"
25
+ printf 'Using Pyodide host Python: %s\n' "$PYODIDE_HOST_PYTHON"
26
+ printf 'Using Pyodide xbuildenv channel: %s\n' "$PYODIDE_XBUILDENV_CHANNEL"
27
+ printf 'Using Pyodide xbuildenv version: %s\n' "$PYODIDE_XBUILDENV_VERSION"
28
+ printf 'Using Emscripten version: %s\n' "$PYODIDE_EMSCRIPTEN_VERSION"
29
+ printf 'Using Rust toolchain: %s\n' "$RUST_TOOLCHAIN"
30
+
31
+ install_args=(
32
+ xbuildenv
33
+ install
34
+ "$PYODIDE_XBUILDENV_VERSION"
35
+ --path
36
+ "$PYODIDE_XBUILDENV_ROOT"
37
+ )
38
+ if [ "$PYODIDE_XBUILDENV_CHANNEL" = "nightly" ]; then
39
+ install_args+=(--nightly)
40
+ fi
41
+
42
+ uv run --python "$PYODIDE_HOST_PYTHON" --with pyodide-build pyodide "${install_args[@]}"
43
+ uv run --python "$PYODIDE_HOST_PYTHON" --with pyodide-build pyodide \
44
+ xbuildenv install-emscripten \
45
+ --version "$PYODIDE_EMSCRIPTEN_VERSION" \
46
+ --path "$PYODIDE_XBUILDENV_ROOT"
47
+
48
+ rustup toolchain install "$RUST_TOOLCHAIN"
49
+ rustup target add wasm32-unknown-emscripten --toolchain "$RUST_TOOLCHAIN"
50
+
51
+ EMSDK_ENV="$PYODIDE_XBUILDENV_ROOT/$PYODIDE_XBUILDENV_VERSION/emsdk/emsdk_env.sh"
52
+ if [ ! -f "$EMSDK_ENV" ]; then
53
+ printf 'Expected emsdk activation script at %s\n' "$EMSDK_ENV" >&2
54
+ exit 1
55
+ fi
56
+
57
+ # shellcheck source=/dev/null
58
+ source "$EMSDK_ENV" >/dev/null 2>&1
59
+
60
+ export PYODIDE_XBUILDENV_PATH="$PYODIDE_XBUILDENV_ROOT"
61
+ export RUSTUP_TOOLCHAIN="$RUST_TOOLCHAIN"
62
+ export UV_CACHE_DIR
63
+
64
+ cd "$PROJECT_ROOT"
65
+ mkdir -p dist
66
+ rm -f dist/fastquadtree-*-pyemscripten_*_wasm32.whl
67
+ uv run --python "$PYODIDE_HOST_PYTHON" --with pyodide-build pyodide build . --outdir dist
68
+
69
+ printf '\nBuilt wheel:\n'
70
+ shopt -s nullglob
71
+ matches=("$PROJECT_ROOT"/dist/$PYODIDE_EXPECTED_WHEEL_GLOB)
72
+ if [ "${#matches[@]}" -eq 0 ]; then
73
+ printf 'No wheel matching expected Pyodide target was produced: %s\n' \
74
+ "$PYODIDE_EXPECTED_WHEEL_GLOB" >&2
75
+ exit 1
76
+ fi
77
+ printf '%s\n' "${matches[@]}" | sort
@@ -1,49 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
5
- PYODIDE_ENV_VERSION="${PYODIDE_ENV_VERSION:-20260401}"
6
- PYODIDE_XBUILDENV_ROOT="${PYODIDE_XBUILDENV_ROOT:-${XDG_CACHE_HOME:-$HOME/.cache}/fastquadtree-pyodide}"
7
- RUST_TOOLCHAIN="${RUST_TOOLCHAIN:-1.93.0}"
8
- UV_CACHE_DIR="${UV_CACHE_DIR:-${XDG_CACHE_HOME:-$HOME/.cache}/uv}"
9
-
10
- need_cmd() {
11
- if ! command -v "$1" >/dev/null 2>&1; then
12
- printf 'Missing required command: %s\n' "$1" >&2
13
- exit 1
14
- fi
15
- }
16
-
17
- need_cmd pyodide
18
- need_cmd rustup
19
-
20
- printf 'Using Pyodide xbuildenv root: %s\n' "$PYODIDE_XBUILDENV_ROOT"
21
- printf 'Using Pyodide nightly env: %s\n' "$PYODIDE_ENV_VERSION"
22
- printf 'Using Rust toolchain: %s\n' "$RUST_TOOLCHAIN"
23
-
24
- if [ ! -d "$PYODIDE_XBUILDENV_ROOT/$PYODIDE_ENV_VERSION" ]; then
25
- pyodide xbuildenv install "$PYODIDE_ENV_VERSION" --nightly --path "$PYODIDE_XBUILDENV_ROOT"
26
- fi
27
-
28
- pyodide xbuildenv install-emscripten --path "$PYODIDE_XBUILDENV_ROOT"
29
- rustup toolchain install "$RUST_TOOLCHAIN"
30
- rustup target add wasm32-unknown-emscripten --toolchain "$RUST_TOOLCHAIN"
31
-
32
- EMSDK_ENV="$PYODIDE_XBUILDENV_ROOT/$PYODIDE_ENV_VERSION/emsdk/emsdk_env.sh"
33
- if [ ! -f "$EMSDK_ENV" ]; then
34
- printf 'Expected emsdk activation script at %s\n' "$EMSDK_ENV" >&2
35
- exit 1
36
- fi
37
-
38
- # shellcheck source=/dev/null
39
- source "$EMSDK_ENV" >/dev/null 2>&1
40
-
41
- export PYODIDE_XBUILDENV_PATH="$PYODIDE_XBUILDENV_ROOT"
42
- export RUSTUP_TOOLCHAIN="$RUST_TOOLCHAIN"
43
- export UV_CACHE_DIR
44
-
45
- cd "$PROJECT_ROOT"
46
- pyodide build .
47
-
48
- printf '\nBuilt wheel:\n'
49
- find "$PROJECT_ROOT/dist" -maxdepth 1 -type f -name 'fastquadtree-*-pyemscripten_*_wasm32.whl' -print | sort
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes