fastquadtree 2.4.0__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.
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/.github/workflows/docs.yml +3 -3
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/.github/workflows/release.yml +69 -12
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/.github/workflows/test.yml +4 -4
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/.gitignore +5 -1
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/Cargo.lock +1 -1
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/Cargo.toml +1 -1
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/PKG-INFO +1 -1
- fastquadtree-2.4.2/scripts/build_pyodide_wheel.sh +77 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/.pre-commit-config.yaml +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/LICENSE +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/README.md +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/assets/ballpit.png +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/assets/interactive_v2_rect_screenshot.png +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/assets/interactive_v2_screenshot.png +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/assets/pygame_sprites_demo.png +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/assets/quadtree_bench_throughput.png +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/assets/quadtree_bench_time.png +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/benchmarks/benchmark_native_vs_shim.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/benchmarks/benchmark_np_vs_list.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/benchmarks/benchmark_serialization_vs_rebuild.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/benchmarks/cross_library_bench.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/benchmarks/quadtree_bench/__init__.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/benchmarks/quadtree_bench/engines.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/benchmarks/quadtree_bench/main.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/benchmarks/quadtree_bench/optimizer.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/benchmarks/quadtree_bench/plotting.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/benchmarks/quadtree_bench/runner.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/benchmarks/runner.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/benchmarks/system_info_collector.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/docs/2.0_migration_guide.md +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/docs/2.0_proposal.md +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/docs/api/insert_result.md +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/docs/api/item.md +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/docs/api/point_item.md +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/docs/api/pygame.md +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/docs/api/pyqtree.md +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/docs/api/quadtree.md +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/docs/api/quadtree_objects.md +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/docs/api/rect_item.md +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/docs/api/rect_quadtree.md +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/docs/api/rect_quadtree_objects.md +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/docs/benchmark.md +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/docs/engine_defaults.md +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/docs/future_features.md +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/docs/index.md +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/docs/quickstart.md +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/docs/runnables.md +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/docs/rust_usage.md +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/docs/styles/overrides.css +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/examples/custom_id_example.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/examples/object_tracking_example.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/interactive/ballpit.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/interactive/interactive.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/interactive/interactive_v2.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/interactive/interactive_v2_rect.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/interactive/pygame_sprites.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/mkdocs.yml +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/pyproject.toml +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/pyrightconfig.json +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/pysrc/fastquadtree/__init__.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/pysrc/fastquadtree/_base_quadtree.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/pysrc/fastquadtree/_base_quadtree_objects.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/pysrc/fastquadtree/_common.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/pysrc/fastquadtree/_insert_result.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/pysrc/fastquadtree/_item.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/pysrc/fastquadtree/_obj_store.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/pysrc/fastquadtree/point_quadtree.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/pysrc/fastquadtree/point_quadtree_objects.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/pysrc/fastquadtree/py.typed +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/pysrc/fastquadtree/pygame.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/pysrc/fastquadtree/pyqtree.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/pysrc/fastquadtree/rect_quadtree.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/pysrc/fastquadtree/rect_quadtree_objects.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/src/geom.rs +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/src/lib.rs +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/src/quadtree.rs +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/src/rect_quadtree.rs +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/src/serialization.rs +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/__init__.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/insertions.rs +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/nearest_neighbor.rs +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/query.rs +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/rect_quadtree.rs +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/rectangle_traversal.rs +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/serialization.rs +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_delete.rs +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/__init__.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/common/test_common_validation.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/common/test_insert_result_and_items.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/common/test_internal_edges.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/common/test_obj_store.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/common/test_serialization_container.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/conftest.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/integration/test_migration_breaks_and_safety.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/integration/test_optional_pygame_dependency.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/integration/test_public_api_contracts.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/integration/test_pygame_integration.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/points/test_point_quadtree_core.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/points/test_point_quadtree_mutation.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/points/test_point_quadtree_numpy.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/points/test_point_quadtree_precision.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/points/test_point_quadtree_serialization.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/points_objects/test_point_quadtree_objects_core.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/points_objects/test_point_quadtree_objects_deletion_update.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/points_objects/test_point_quadtree_objects_numpy.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/points_objects/test_point_quadtree_objects_serialization.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/rects/test_rect_quadtree_core.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/rects/test_rect_quadtree_mutation.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/rects/test_rect_quadtree_numpy.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/rects/test_rect_quadtree_serialization.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/rects_objects/test_rect_quadtree_objects_core.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/rects_objects/test_rect_quadtree_objects_deletion_update.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/rects_objects/test_rect_quadtree_objects_numpy.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/rects_objects/test_rect_quadtree_objects_serialization.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/test_pyqtree_shim_compat.py +0 -0
- {fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/unconventional_bounds.rs +0 -0
|
@@ -13,14 +13,14 @@ jobs:
|
|
|
13
13
|
build:
|
|
14
14
|
runs-on: ubuntu-latest
|
|
15
15
|
steps:
|
|
16
|
-
- uses: actions/checkout@
|
|
16
|
+
- uses: actions/checkout@v6
|
|
17
17
|
with:
|
|
18
18
|
fetch-depth: 0
|
|
19
19
|
fetch-tags: true
|
|
20
|
-
- uses: actions/setup-python@
|
|
20
|
+
- uses: actions/setup-python@v6
|
|
21
21
|
with: { python-version: '3.11' }
|
|
22
22
|
- name: Install uv
|
|
23
|
-
uses: astral-sh/setup-uv@
|
|
23
|
+
uses: astral-sh/setup-uv@v8.1.0
|
|
24
24
|
with:
|
|
25
25
|
enable-cache: true
|
|
26
26
|
- run: uv sync --group dev --group docs
|
|
@@ -12,15 +12,15 @@ jobs:
|
|
|
12
12
|
name: Test build
|
|
13
13
|
runs-on: ubuntu-latest
|
|
14
14
|
steps:
|
|
15
|
-
- uses: actions/checkout@
|
|
15
|
+
- uses: actions/checkout@v6
|
|
16
16
|
|
|
17
17
|
- name: Set up Python
|
|
18
|
-
uses: actions/setup-python@
|
|
18
|
+
uses: actions/setup-python@v6
|
|
19
19
|
with:
|
|
20
20
|
python-version: "3.9"
|
|
21
21
|
|
|
22
22
|
- name: Install uv
|
|
23
|
-
uses: astral-sh/setup-uv@
|
|
23
|
+
uses: astral-sh/setup-uv@v8.1.0
|
|
24
24
|
with:
|
|
25
25
|
enable-cache: true
|
|
26
26
|
|
|
@@ -45,7 +45,7 @@ jobs:
|
|
|
45
45
|
run: cargo test
|
|
46
46
|
|
|
47
47
|
- name: Upload coverage to Codecov
|
|
48
|
-
uses: codecov/codecov-action@
|
|
48
|
+
uses: codecov/codecov-action@v6
|
|
49
49
|
with:
|
|
50
50
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
51
51
|
|
|
@@ -78,42 +78,99 @@ jobs:
|
|
|
78
78
|
manylinux: "2_28"
|
|
79
79
|
|
|
80
80
|
steps:
|
|
81
|
-
- uses: actions/checkout@
|
|
81
|
+
- uses: actions/checkout@v6
|
|
82
82
|
|
|
83
83
|
# Keep Python simple here; maturin-action brings its own Python(s) for builds.
|
|
84
84
|
- name: Set up Python
|
|
85
|
-
uses: actions/setup-python@
|
|
85
|
+
uses: actions/setup-python@v6
|
|
86
86
|
with:
|
|
87
87
|
python-version: "3.9"
|
|
88
88
|
|
|
89
89
|
- name: Build wheels with maturin
|
|
90
|
-
uses: PyO3/maturin-action@v1
|
|
90
|
+
uses: PyO3/maturin-action@v1.51.0
|
|
91
91
|
with:
|
|
92
92
|
command: build
|
|
93
93
|
args: ${{ matrix.maturin_args }}
|
|
94
94
|
manylinux: ${{ matrix.manylinux }}
|
|
95
95
|
|
|
96
96
|
- name: Upload dist artifacts
|
|
97
|
-
uses: actions/upload-artifact@
|
|
97
|
+
uses: actions/upload-artifact@v7
|
|
98
98
|
with:
|
|
99
99
|
name: dist-${{ runner.os }}-${{ matrix.maturin_args }}
|
|
100
100
|
path: dist/*
|
|
101
101
|
|
|
102
|
+
build_pyodide:
|
|
103
|
+
name: Build Pyodide wheels
|
|
104
|
+
needs: test
|
|
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"
|
|
122
|
+
steps:
|
|
123
|
+
- uses: actions/checkout@v6
|
|
124
|
+
|
|
125
|
+
- name: Set up Python
|
|
126
|
+
uses: actions/setup-python@v6
|
|
127
|
+
with:
|
|
128
|
+
python-version: ${{ matrix.python_version }}
|
|
129
|
+
|
|
130
|
+
- name: Install uv
|
|
131
|
+
uses: astral-sh/setup-uv@v8.1.0
|
|
132
|
+
with:
|
|
133
|
+
enable-cache: true
|
|
134
|
+
|
|
135
|
+
- name: Cache Pyodide cross-build environment
|
|
136
|
+
uses: actions/cache@v4
|
|
137
|
+
with:
|
|
138
|
+
path: ~/.cache/fastquadtree-${{ matrix.label }}
|
|
139
|
+
key: pyodide-xbuildenv-${{ runner.os }}-${{ matrix.label }}-${{ matrix.xbuildenv_version }}-${{ matrix.emscripten_version }}-rust-1.93.0
|
|
140
|
+
|
|
141
|
+
- name: Build Pyodide wheel
|
|
142
|
+
env:
|
|
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 }}
|
|
148
|
+
RUST_TOOLCHAIN: "1.93.0"
|
|
149
|
+
UV_CACHE_DIR: ~/.cache/uv
|
|
150
|
+
PYODIDE_EXPECTED_WHEEL_GLOB: ${{ matrix.wheel_glob }}
|
|
151
|
+
run: bash scripts/build_pyodide_wheel.sh
|
|
152
|
+
|
|
153
|
+
- name: Upload Pyodide dist artifact
|
|
154
|
+
uses: actions/upload-artifact@v7
|
|
155
|
+
with:
|
|
156
|
+
name: dist-${{ matrix.label }}
|
|
157
|
+
path: dist/${{ matrix.wheel_glob }}
|
|
158
|
+
|
|
102
159
|
publish:
|
|
103
160
|
name: Publish distributions to PyPI
|
|
104
|
-
needs: build
|
|
161
|
+
needs: [build, build_pyodide]
|
|
105
162
|
runs-on: ubuntu-latest
|
|
106
163
|
permissions:
|
|
107
164
|
contents: read
|
|
108
165
|
id-token: write # for Trusted Publisher (recommended)
|
|
109
166
|
steps:
|
|
110
|
-
- uses: actions/checkout@
|
|
167
|
+
- uses: actions/checkout@v6
|
|
111
168
|
|
|
112
169
|
- name: Install uv
|
|
113
|
-
uses: astral-sh/setup-uv@
|
|
170
|
+
uses: astral-sh/setup-uv@v8.1.0
|
|
114
171
|
|
|
115
172
|
- name: Download all dist artifacts
|
|
116
|
-
uses: actions/download-artifact@
|
|
173
|
+
uses: actions/download-artifact@v8
|
|
117
174
|
with:
|
|
118
175
|
pattern: dist-*
|
|
119
176
|
path: dist
|
|
@@ -13,16 +13,16 @@ jobs:
|
|
|
13
13
|
python-version: ["3.9", "3.14"]
|
|
14
14
|
|
|
15
15
|
steps:
|
|
16
|
-
- uses: actions/checkout@
|
|
16
|
+
- uses: actions/checkout@v6
|
|
17
17
|
|
|
18
18
|
- name: Set up Python ${{ matrix.python-version }}
|
|
19
|
-
uses: actions/setup-python@
|
|
19
|
+
uses: actions/setup-python@v6
|
|
20
20
|
with:
|
|
21
21
|
python-version: ${{ matrix.python-version }}
|
|
22
22
|
allow-prereleases: true
|
|
23
23
|
|
|
24
24
|
- name: Install uv
|
|
25
|
-
uses: astral-sh/setup-uv@
|
|
25
|
+
uses: astral-sh/setup-uv@v8.1.0
|
|
26
26
|
with:
|
|
27
27
|
enable-cache: true
|
|
28
28
|
|
|
@@ -49,6 +49,6 @@ jobs:
|
|
|
49
49
|
run: cargo test
|
|
50
50
|
|
|
51
51
|
- name: Upload coverage to Codecov
|
|
52
|
-
uses: codecov/codecov-action@
|
|
52
|
+
uses: codecov/codecov-action@v6
|
|
53
53
|
with:
|
|
54
54
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
@@ -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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/common/test_common_validation.py
RENAMED
|
File without changes
|
{fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/common/test_insert_result_and_items.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/common/test_serialization_container.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/integration/test_public_api_contracts.py
RENAMED
|
File without changes
|
{fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/integration/test_pygame_integration.py
RENAMED
|
File without changes
|
{fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/points/test_point_quadtree_core.py
RENAMED
|
File without changes
|
{fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/points/test_point_quadtree_mutation.py
RENAMED
|
File without changes
|
{fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/points/test_point_quadtree_numpy.py
RENAMED
|
File without changes
|
{fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/points/test_point_quadtree_precision.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/rects/test_rect_quadtree_core.py
RENAMED
|
File without changes
|
{fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/rects/test_rect_quadtree_mutation.py
RENAMED
|
File without changes
|
{fastquadtree-2.4.0 → fastquadtree-2.4.2}/tests/test_python/rects/test_rect_quadtree_numpy.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|