rstar-python 0.0.2__tar.gz → 0.2.0__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.
@@ -0,0 +1,70 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: ["**"]
8
+ workflow_dispatch:
9
+
10
+ concurrency:
11
+ group: ci-${{ github.ref }}
12
+ cancel-in-progress: true
13
+
14
+ jobs:
15
+ test:
16
+ name: Test ${{ matrix.os }} / py${{ matrix.python-version }}
17
+ runs-on: ${{ matrix.os }}
18
+ strategy:
19
+ fail-fast: false
20
+ matrix:
21
+ os: [ubuntu-latest, windows-latest, macos-latest]
22
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
23
+
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+
27
+ - name: Set up Python ${{ matrix.python-version }}
28
+ uses: actions/setup-python@v5
29
+ with:
30
+ python-version: ${{ matrix.python-version }}
31
+
32
+ - name: Install Rust
33
+ uses: dtolnay/rust-toolchain@stable
34
+
35
+ # maturin develop needs an activated virtualenv; building a wheel and
36
+ # installing it works uniformly across OSes without one.
37
+ - name: Build and install
38
+ run: |
39
+ python -m pip install --upgrade pip
40
+ pip install maturin pytest numpy
41
+ maturin build --release --out dist
42
+ pip install --no-index --find-links dist rstar-python
43
+
44
+ - name: Run tests
45
+ run: pytest python/tests -v
46
+
47
+ rust-lint:
48
+ name: Rust fmt & clippy
49
+ runs-on: ubuntu-latest
50
+ steps:
51
+ - uses: actions/checkout@v4
52
+ - name: Install Rust
53
+ uses: dtolnay/rust-toolchain@stable
54
+ with:
55
+ components: rustfmt, clippy
56
+ - uses: actions/cache@v4
57
+ with:
58
+ path: |
59
+ ~/.cargo/bin/
60
+ ~/.cargo/registry/index/
61
+ ~/.cargo/registry/cache/
62
+ ~/.cargo/git/db/
63
+ target/
64
+ key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
65
+ - name: Check formatting
66
+ run: cargo fmt --check
67
+ # --lib avoids linking a test executable, which fails for an
68
+ # extension-module cdylib (no libpython to link against).
69
+ - name: Clippy
70
+ run: cargo clippy --release --lib -- -D warnings
@@ -0,0 +1,225 @@
1
+ name: Release
2
+
3
+ # Publish to PyPI on a version tag (e.g. `v0.1.0`), or to TestPyPI on demand.
4
+ #
5
+ # Tag flow:
6
+ # 1. Bump the version in pyproject.toml + Cargo.toml and update CHANGELOG.md.
7
+ # 2. git tag v0.1.0 && git push --tags
8
+ # 3. This workflow verifies the tag matches the version, runs the tests,
9
+ # builds wheels + sdist, publishes to PyPI via trusted publishing, and
10
+ # creates a GitHub Release with notes from the changelog.
11
+ #
12
+ # TestPyPI flow:
13
+ # Actions -> Release -> Run workflow -> target = testpypi.
14
+
15
+ on:
16
+ push:
17
+ tags: ["v*"]
18
+ workflow_dispatch:
19
+ inputs:
20
+ target:
21
+ description: "Where to publish"
22
+ required: true
23
+ default: testpypi
24
+ type: choice
25
+ options: [testpypi, pypi]
26
+
27
+ concurrency:
28
+ group: release-${{ github.ref }}
29
+ cancel-in-progress: false
30
+
31
+ jobs:
32
+ # Fail fast if the tag doesn't match the packaged version.
33
+ check-version:
34
+ name: Check version matches tag
35
+ runs-on: ubuntu-latest
36
+ steps:
37
+ - uses: actions/checkout@v4
38
+ - name: Verify tag == pyproject == Cargo version
39
+ if: startsWith(github.ref, 'refs/tags/v')
40
+ run: |
41
+ tag="${GITHUB_REF_NAME#v}"
42
+ pyproject=$(grep -m1 '^version = ' pyproject.toml | sed -E 's/.*"(.*)".*/\1/')
43
+ cargo=$(grep -m1 '^version = ' Cargo.toml | sed -E 's/.*"(.*)".*/\1/')
44
+ echo "tag=$tag pyproject=$pyproject cargo=$cargo"
45
+ if [ "$tag" != "$pyproject" ] || [ "$tag" != "$cargo" ]; then
46
+ echo "::error::Tag ($tag) must match pyproject.toml ($pyproject) and Cargo.toml ($cargo)"
47
+ exit 1
48
+ fi
49
+
50
+ # Native test gate so we never publish broken code.
51
+ test:
52
+ name: Test (Linux)
53
+ runs-on: ubuntu-latest
54
+ steps:
55
+ - uses: actions/checkout@v4
56
+ - uses: actions/setup-python@v5
57
+ with:
58
+ python-version: "3.12"
59
+ - uses: dtolnay/rust-toolchain@stable
60
+ - name: Build and test
61
+ run: |
62
+ python -m pip install --upgrade pip
63
+ pip install maturin pytest numpy
64
+ maturin build --release --out dist
65
+ pip install --no-index --find-links dist rstar-python
66
+ pytest python/tests -v
67
+
68
+ build-wheels:
69
+ name: Wheel ${{ matrix.platform }} ${{ matrix.target }} ${{ matrix.manylinux }}
70
+ needs: [test]
71
+ runs-on: ${{ matrix.os }}
72
+ strategy:
73
+ fail-fast: false
74
+ matrix:
75
+ include:
76
+ - { os: ubuntu-latest, platform: linux, target: x86_64, manylinux: auto }
77
+ - { os: ubuntu-latest, platform: linux, target: aarch64, manylinux: auto }
78
+ - { os: ubuntu-latest, platform: linux, target: x86_64, manylinux: musllinux_1_2 }
79
+ - { os: ubuntu-latest, platform: linux, target: aarch64, manylinux: musllinux_1_2 }
80
+ - { os: windows-latest, platform: windows, target: x64 }
81
+ # One universal2 wheel (Intel + Apple Silicon) cross-built on the
82
+ # fast arm64 runner — avoids the scarce/slow macos-13 Intel runners.
83
+ - { os: macos-14, platform: macos, target: universal2-apple-darwin }
84
+ steps:
85
+ - uses: actions/checkout@v4
86
+ - name: Build wheels
87
+ uses: PyO3/maturin-action@v1
88
+ with:
89
+ target: ${{ matrix.target }}
90
+ manylinux: ${{ matrix.manylinux }}
91
+ args: --release --out dist
92
+ sccache: "true"
93
+ - uses: actions/upload-artifact@v4
94
+ with:
95
+ name: wheels-${{ matrix.platform }}-${{ matrix.target }}-${{ matrix.manylinux || 'native' }}
96
+ path: dist/*.whl
97
+
98
+ build-sdist:
99
+ name: Source distribution
100
+ needs: [test]
101
+ runs-on: ubuntu-latest
102
+ steps:
103
+ - uses: actions/checkout@v4
104
+ - name: Build sdist
105
+ uses: PyO3/maturin-action@v1
106
+ with:
107
+ command: sdist
108
+ args: --out dist
109
+ - uses: actions/upload-artifact@v4
110
+ with:
111
+ name: sdist
112
+ path: dist/*.tar.gz
113
+
114
+ # Gather everything and validate before any publish step touches an index.
115
+ collect:
116
+ name: Collect and check artifacts
117
+ needs: [build-wheels, build-sdist]
118
+ runs-on: ubuntu-latest
119
+ steps:
120
+ - uses: actions/download-artifact@v4
121
+ with:
122
+ pattern: "wheels-*"
123
+ path: dist
124
+ merge-multiple: true
125
+ - uses: actions/download-artifact@v4
126
+ with:
127
+ name: sdist
128
+ path: dist
129
+ # A clean interpreter so a fresh `packaging` is used: the runner's
130
+ # system packaging is too old to recognise the Metadata 2.4
131
+ # `License-File` field and makes `twine check` spuriously fail.
132
+ - uses: actions/setup-python@v5
133
+ with:
134
+ python-version: "3.12"
135
+ - name: List and check
136
+ run: |
137
+ ls -la dist/
138
+ echo "wheels: $(ls dist/*.whl | wc -l), sdists: $(ls dist/*.tar.gz | wc -l)"
139
+ python -m pip install --upgrade twine packaging
140
+ twine check dist/*
141
+ - uses: actions/upload-artifact@v4
142
+ with:
143
+ name: dist
144
+ path: dist/*
145
+
146
+ publish-testpypi:
147
+ name: Publish to TestPyPI
148
+ needs: [collect]
149
+ if: github.event_name == 'workflow_dispatch' && github.event.inputs.target == 'testpypi'
150
+ runs-on: ubuntu-latest
151
+ environment:
152
+ name: testpypi
153
+ url: https://test.pypi.org/p/rstar-python
154
+ permissions:
155
+ id-token: write
156
+ steps:
157
+ - uses: actions/download-artifact@v4
158
+ with:
159
+ name: dist
160
+ path: dist
161
+ - name: Publish
162
+ uses: pypa/gh-action-pypi-publish@release/v1
163
+ with:
164
+ repository-url: https://test.pypi.org/legacy/
165
+ packages-dir: dist/
166
+ # TestPyPI rejects PEP 740 attestations; disable for it.
167
+ attestations: false
168
+ skip-existing: true
169
+ verbose: true
170
+
171
+ publish-pypi:
172
+ name: Publish to PyPI
173
+ needs: [check-version, collect]
174
+ if: >-
175
+ startsWith(github.ref, 'refs/tags/v') ||
176
+ (github.event_name == 'workflow_dispatch' && github.event.inputs.target == 'pypi')
177
+ runs-on: ubuntu-latest
178
+ environment:
179
+ name: pypi
180
+ url: https://pypi.org/p/rstar-python
181
+ permissions:
182
+ id-token: write
183
+ steps:
184
+ - uses: actions/download-artifact@v4
185
+ with:
186
+ name: dist
187
+ path: dist
188
+ - name: Publish
189
+ uses: pypa/gh-action-pypi-publish@release/v1
190
+ with:
191
+ packages-dir: dist/
192
+ attestations: true
193
+ verbose: true
194
+
195
+ github-release:
196
+ name: GitHub Release
197
+ needs: [publish-pypi]
198
+ if: startsWith(github.ref, 'refs/tags/v')
199
+ runs-on: ubuntu-latest
200
+ permissions:
201
+ contents: write
202
+ steps:
203
+ - uses: actions/checkout@v4
204
+ - uses: actions/download-artifact@v4
205
+ with:
206
+ name: dist
207
+ path: dist
208
+ - name: Extract changelog section
209
+ id: notes
210
+ run: |
211
+ version="${GITHUB_REF_NAME#v}"
212
+ # Pull the section for this version out of CHANGELOG.md.
213
+ awk -v v="$version" '
214
+ $0 ~ "^## \\[" v "\\]" {grab=1; next}
215
+ grab && /^## \[/ {exit}
216
+ grab {print}
217
+ ' CHANGELOG.md > notes.md
218
+ if [ ! -s notes.md ]; then echo "See CHANGELOG.md for details." > notes.md; fi
219
+ echo "Release notes:"; cat notes.md
220
+ - name: Create release
221
+ uses: softprops/action-gh-release@v2
222
+ with:
223
+ body_path: notes.md
224
+ files: dist/*
225
+ fail_on_unmatched_files: true
@@ -6,5 +6,6 @@ __pycache__
6
6
  *.pyc
7
7
  .pytest_cache
8
8
  /venv
9
+ /.venv
9
10
  /dist
10
11
  *.egg-info
@@ -0,0 +1,56 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.2.0] - 2026-08-21
11
+
12
+ ### Added
13
+ - `PyRTree.locate_in_envelope_ids()` for stored ids within a closed bounding box.
14
+ - `PyRTree.remove_item()` for exact point-and-id removal when points coincide.
15
+ - `PyBBoxRTree`, a 2–8 dimensional index for stored axis-aligned bounding boxes,
16
+ with insertion, optimized NumPy bulk loading, closed-boundary intersection,
17
+ and exact removal.
18
+ - `PyBBoxRTree.intersection_batch()` for vectorised queries with CSR-style output.
19
+ - Bounding-box bulk loading and batched intersections release the GIL while
20
+ running native tree operations.
21
+
22
+ ## [0.1.0] - 2026-06-07
23
+
24
+ ### Added
25
+ - Per-point integer ids: `insert(point, data=None)` returns the id (auto-assigned
26
+ or explicit); `bulk_load(points, data=None)` accepts a list of ids.
27
+ - Vectorised `query(points, k=1)` returning `(distances, ids)` numpy arrays
28
+ (scipy/sklearn `KDTree.query` style).
29
+ - Vectorised `query_radius(points, radius)` returning ids per query point.
30
+ - `bulk_load` now accepts a 2-D numpy `float64` array in addition to lists.
31
+ - Pythonic protocols: `__len__`, `__contains__`, `__repr__`, and a `dims` property.
32
+ - `__version__` attribute.
33
+ - Type stubs (`.pyi`) and `py.typed` marker for IDE / `mypy` support.
34
+ - `abi3` wheels (CPython 3.10+): one wheel per platform, forward-compatible with
35
+ future Python versions.
36
+
37
+ ### Changed
38
+ - Bumped `pyo3` 0.19 → 0.28 and `rstar` 0.12 → 0.13.
39
+ - Supported dimensions are now **2–8** (was 1–4). rstar 0.13 no longer supports
40
+ 1-dimensional trees; the upper bound was raised from 4 to 8.
41
+ - Fixed the Python package layout so wheels install and import correctly.
42
+
43
+ ### Notes
44
+ - The coordinate-returning methods (`nearest_neighbor`, `k_nearest_neighbors`,
45
+ `neighbors_within_radius`, `locate_in_envelope`) are unchanged and remain
46
+ backward compatible.
47
+
48
+ ## [0.0.1] - 2025-02-20
49
+
50
+ ### Added
51
+ - Initial release of rstar-python
52
+ - Python bindings for the rstar R*-tree spatial index library
53
+ - Support for 2D and 3D spatial indexing
54
+ - Methods: insert, bulk_load, nearest, locate_within_distance, remove
55
+ - Support for Python 3.10, 3.11, and 3.12
56
+ - Wheels didn't work!
@@ -0,0 +1,285 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "autocfg"
7
+ version = "1.5.1"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
10
+
11
+ [[package]]
12
+ name = "byteorder"
13
+ version = "1.5.0"
14
+ source = "registry+https://github.com/rust-lang/crates.io-index"
15
+ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
16
+
17
+ [[package]]
18
+ name = "hash32"
19
+ version = "0.3.1"
20
+ source = "registry+https://github.com/rust-lang/crates.io-index"
21
+ checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606"
22
+ dependencies = [
23
+ "byteorder",
24
+ ]
25
+
26
+ [[package]]
27
+ name = "heapless"
28
+ version = "0.8.0"
29
+ source = "registry+https://github.com/rust-lang/crates.io-index"
30
+ checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad"
31
+ dependencies = [
32
+ "hash32",
33
+ "stable_deref_trait",
34
+ ]
35
+
36
+ [[package]]
37
+ name = "heck"
38
+ version = "0.5.0"
39
+ source = "registry+https://github.com/rust-lang/crates.io-index"
40
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
41
+
42
+ [[package]]
43
+ name = "libc"
44
+ version = "0.2.186"
45
+ source = "registry+https://github.com/rust-lang/crates.io-index"
46
+ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
47
+
48
+ [[package]]
49
+ name = "libm"
50
+ version = "0.2.16"
51
+ source = "registry+https://github.com/rust-lang/crates.io-index"
52
+ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
53
+
54
+ [[package]]
55
+ name = "matrixmultiply"
56
+ version = "0.3.10"
57
+ source = "registry+https://github.com/rust-lang/crates.io-index"
58
+ checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08"
59
+ dependencies = [
60
+ "autocfg",
61
+ "rawpointer",
62
+ ]
63
+
64
+ [[package]]
65
+ name = "ndarray"
66
+ version = "0.17.2"
67
+ source = "registry+https://github.com/rust-lang/crates.io-index"
68
+ checksum = "520080814a7a6b4a6e9070823bb24b4531daac8c4627e08ba5de8c5ef2f2752d"
69
+ dependencies = [
70
+ "matrixmultiply",
71
+ "num-complex",
72
+ "num-integer",
73
+ "num-traits",
74
+ "portable-atomic",
75
+ "portable-atomic-util",
76
+ "rawpointer",
77
+ ]
78
+
79
+ [[package]]
80
+ name = "num-complex"
81
+ version = "0.4.6"
82
+ source = "registry+https://github.com/rust-lang/crates.io-index"
83
+ checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
84
+ dependencies = [
85
+ "num-traits",
86
+ ]
87
+
88
+ [[package]]
89
+ name = "num-integer"
90
+ version = "0.1.46"
91
+ source = "registry+https://github.com/rust-lang/crates.io-index"
92
+ checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
93
+ dependencies = [
94
+ "num-traits",
95
+ ]
96
+
97
+ [[package]]
98
+ name = "num-traits"
99
+ version = "0.2.19"
100
+ source = "registry+https://github.com/rust-lang/crates.io-index"
101
+ checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
102
+ dependencies = [
103
+ "autocfg",
104
+ "libm",
105
+ ]
106
+
107
+ [[package]]
108
+ name = "numpy"
109
+ version = "0.28.0"
110
+ source = "registry+https://github.com/rust-lang/crates.io-index"
111
+ checksum = "778da78c64ddc928ebf5ad9df5edf0789410ff3bdbf3619aed51cd789a6af1e2"
112
+ dependencies = [
113
+ "libc",
114
+ "ndarray",
115
+ "num-complex",
116
+ "num-integer",
117
+ "num-traits",
118
+ "pyo3",
119
+ "pyo3-build-config",
120
+ "rustc-hash",
121
+ ]
122
+
123
+ [[package]]
124
+ name = "once_cell"
125
+ version = "1.21.4"
126
+ source = "registry+https://github.com/rust-lang/crates.io-index"
127
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
128
+
129
+ [[package]]
130
+ name = "portable-atomic"
131
+ version = "1.13.1"
132
+ source = "registry+https://github.com/rust-lang/crates.io-index"
133
+ checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
134
+
135
+ [[package]]
136
+ name = "portable-atomic-util"
137
+ version = "0.2.7"
138
+ source = "registry+https://github.com/rust-lang/crates.io-index"
139
+ checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618"
140
+ dependencies = [
141
+ "portable-atomic",
142
+ ]
143
+
144
+ [[package]]
145
+ name = "proc-macro2"
146
+ version = "1.0.106"
147
+ source = "registry+https://github.com/rust-lang/crates.io-index"
148
+ checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
149
+ dependencies = [
150
+ "unicode-ident",
151
+ ]
152
+
153
+ [[package]]
154
+ name = "pyo3"
155
+ version = "0.28.3"
156
+ source = "registry+https://github.com/rust-lang/crates.io-index"
157
+ checksum = "91fd8e38a3b50ed1167fb981cd6fd60147e091784c427b8f7183a7ee32c31c12"
158
+ dependencies = [
159
+ "libc",
160
+ "once_cell",
161
+ "portable-atomic",
162
+ "pyo3-build-config",
163
+ "pyo3-ffi",
164
+ "pyo3-macros",
165
+ ]
166
+
167
+ [[package]]
168
+ name = "pyo3-build-config"
169
+ version = "0.28.3"
170
+ source = "registry+https://github.com/rust-lang/crates.io-index"
171
+ checksum = "e368e7ddfdeb98c9bca7f8383be1648fd84ab466bf2bc015e94008db6d35611e"
172
+ dependencies = [
173
+ "target-lexicon",
174
+ ]
175
+
176
+ [[package]]
177
+ name = "pyo3-ffi"
178
+ version = "0.28.3"
179
+ source = "registry+https://github.com/rust-lang/crates.io-index"
180
+ checksum = "7f29e10af80b1f7ccaf7f69eace800a03ecd13e883acfacc1e5d0988605f651e"
181
+ dependencies = [
182
+ "libc",
183
+ "pyo3-build-config",
184
+ ]
185
+
186
+ [[package]]
187
+ name = "pyo3-macros"
188
+ version = "0.28.3"
189
+ source = "registry+https://github.com/rust-lang/crates.io-index"
190
+ checksum = "df6e520eff47c45997d2fc7dd8214b25dd1310918bbb2642156ef66a67f29813"
191
+ dependencies = [
192
+ "proc-macro2",
193
+ "pyo3-macros-backend",
194
+ "quote",
195
+ "syn",
196
+ ]
197
+
198
+ [[package]]
199
+ name = "pyo3-macros-backend"
200
+ version = "0.28.3"
201
+ source = "registry+https://github.com/rust-lang/crates.io-index"
202
+ checksum = "c4cdc218d835738f81c2338f822078af45b4afdf8b2e33cbb5916f108b813acb"
203
+ dependencies = [
204
+ "heck",
205
+ "proc-macro2",
206
+ "pyo3-build-config",
207
+ "quote",
208
+ "syn",
209
+ ]
210
+
211
+ [[package]]
212
+ name = "quote"
213
+ version = "1.0.45"
214
+ source = "registry+https://github.com/rust-lang/crates.io-index"
215
+ checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
216
+ dependencies = [
217
+ "proc-macro2",
218
+ ]
219
+
220
+ [[package]]
221
+ name = "rawpointer"
222
+ version = "0.2.1"
223
+ source = "registry+https://github.com/rust-lang/crates.io-index"
224
+ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
225
+
226
+ [[package]]
227
+ name = "rstar"
228
+ version = "0.13.0"
229
+ source = "registry+https://github.com/rust-lang/crates.io-index"
230
+ checksum = "5912b862fa5ffb462607bfd1e35036c458c537921f508c8235a83d5f3987edfe"
231
+ dependencies = [
232
+ "heapless",
233
+ "num-traits",
234
+ "smallvec",
235
+ ]
236
+
237
+ [[package]]
238
+ name = "rstar-python"
239
+ version = "0.2.0"
240
+ dependencies = [
241
+ "numpy",
242
+ "pyo3",
243
+ "rstar",
244
+ ]
245
+
246
+ [[package]]
247
+ name = "rustc-hash"
248
+ version = "2.1.2"
249
+ source = "registry+https://github.com/rust-lang/crates.io-index"
250
+ checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe"
251
+
252
+ [[package]]
253
+ name = "smallvec"
254
+ version = "1.15.1"
255
+ source = "registry+https://github.com/rust-lang/crates.io-index"
256
+ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
257
+
258
+ [[package]]
259
+ name = "stable_deref_trait"
260
+ version = "1.2.1"
261
+ source = "registry+https://github.com/rust-lang/crates.io-index"
262
+ checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
263
+
264
+ [[package]]
265
+ name = "syn"
266
+ version = "2.0.117"
267
+ source = "registry+https://github.com/rust-lang/crates.io-index"
268
+ checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
269
+ dependencies = [
270
+ "proc-macro2",
271
+ "quote",
272
+ "unicode-ident",
273
+ ]
274
+
275
+ [[package]]
276
+ name = "target-lexicon"
277
+ version = "0.13.5"
278
+ source = "registry+https://github.com/rust-lang/crates.io-index"
279
+ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
280
+
281
+ [[package]]
282
+ name = "unicode-ident"
283
+ version = "1.0.24"
284
+ source = "registry+https://github.com/rust-lang/crates.io-index"
285
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
@@ -1,8 +1,8 @@
1
1
  [package]
2
2
  name = "rstar-python"
3
- version = "0.0.2" # Update version to match
3
+ version = "0.2.0"
4
4
  edition = "2021"
5
- license = "MIT" # Add license field
5
+ license = "MIT"
6
6
  description = "Python bindings for the rstar R*-tree spatial index"
7
7
  repository = "https://github.com/kephale/rstar-python"
8
8
  homepage = "https://github.com/kephale/rstar-python"
@@ -13,5 +13,6 @@ name = "rstar_python"
13
13
  crate-type = ["cdylib"]
14
14
 
15
15
  [dependencies]
16
- pyo3 = { version = "0.19", features = ["extension-module"] }
17
- rstar = "0.12"
16
+ pyo3 = { version = "0.28", features = ["extension-module", "abi3-py310"] }
17
+ numpy = "0.28"
18
+ rstar = "0.13"