coarsen 0.1.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.
- coarsen-0.1.0/.github/workflows/ci.yml +44 -0
- coarsen-0.1.0/.github/workflows/release.yml +88 -0
- coarsen-0.1.0/.gitignore +11 -0
- coarsen-0.1.0/CONTRIBUTING.md +72 -0
- coarsen-0.1.0/Cargo.lock +341 -0
- coarsen-0.1.0/Cargo.toml +25 -0
- coarsen-0.1.0/LICENSE +502 -0
- coarsen-0.1.0/NOTICE +30 -0
- coarsen-0.1.0/PKG-INFO +85 -0
- coarsen-0.1.0/README.md +48 -0
- coarsen-0.1.0/benchmarks/README.md +61 -0
- coarsen-0.1.0/benchmarks/benchmark.py +110 -0
- coarsen-0.1.0/benchmarks/environment.json +13 -0
- coarsen-0.1.0/benchmarks/results.jsonl +10 -0
- coarsen-0.1.0/benchmarks/run.sbatch +12 -0
- coarsen-0.1.0/benchmarks/slurm.txt +5 -0
- coarsen-0.1.0/pyproject.toml +56 -0
- coarsen-0.1.0/python/coarsen/__init__.py +87 -0
- coarsen-0.1.0/python/coarsen/_core.pyi +6 -0
- coarsen-0.1.0/python/coarsen/py.typed +0 -0
- coarsen-0.1.0/src/edges.rs +236 -0
- coarsen-0.1.0/src/geom.rs +197 -0
- coarsen-0.1.0/src/lib.rs +20 -0
- coarsen-0.1.0/src/predicates.rs +72 -0
- coarsen-0.1.0/src/python.rs +44 -0
- coarsen-0.1.0/src/tpvw.rs +314 -0
- coarsen-0.1.0/src/validate.rs +298 -0
- coarsen-0.1.0/src/wkb.rs +166 -0
- coarsen-0.1.0/tests/golden.json +176 -0
- coarsen-0.1.0/tests/golden.rs +92 -0
- coarsen-0.1.0/tests/real/22JBM_0_0.json +1 -0
- coarsen-0.1.0/tests/real/34UEU_0_0.json +1 -0
- coarsen-0.1.0/tests/real/48RWV_0_0.json +1 -0
- coarsen-0.1.0/tests/test_parity.py +207 -0
- coarsen-0.1.0/tests/test_real.py +25 -0
- coarsen-0.1.0/tests/test_wkb.py +48 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
pull_request:
|
|
5
|
+
workflow_dispatch:
|
|
6
|
+
permissions:
|
|
7
|
+
contents: read
|
|
8
|
+
jobs:
|
|
9
|
+
rust:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v4
|
|
13
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
14
|
+
with:
|
|
15
|
+
components: rustfmt, clippy
|
|
16
|
+
- run: cargo fmt --check
|
|
17
|
+
- run: cargo clippy --locked --all-targets --all-features -- -D warnings
|
|
18
|
+
- run: cargo test --locked
|
|
19
|
+
python:
|
|
20
|
+
strategy:
|
|
21
|
+
fail-fast: false
|
|
22
|
+
matrix:
|
|
23
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
24
|
+
python: ['3.10', '3.11', '3.12', '3.13']
|
|
25
|
+
runs-on: ${{ matrix.os }}
|
|
26
|
+
steps:
|
|
27
|
+
- uses: actions/checkout@v4
|
|
28
|
+
- uses: actions/setup-python@v5
|
|
29
|
+
with:
|
|
30
|
+
python-version: ${{ matrix.python }}
|
|
31
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
32
|
+
- run: python -m pip install ".[test]"
|
|
33
|
+
- run: python -m pytest --cov=coarsen tests/
|
|
34
|
+
quality:
|
|
35
|
+
runs-on: ubuntu-latest
|
|
36
|
+
steps:
|
|
37
|
+
- uses: actions/checkout@v4
|
|
38
|
+
- uses: actions/setup-python@v5
|
|
39
|
+
with:
|
|
40
|
+
python-version: '3.13'
|
|
41
|
+
- run: python -m pip install numpy shapely==2.1.2 ruff ty pytest pyarrow pyproj
|
|
42
|
+
- run: ruff check .
|
|
43
|
+
- run: ruff format --check .
|
|
44
|
+
- run: ty check
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
tags: ['v*']
|
|
5
|
+
workflow_dispatch:
|
|
6
|
+
permissions:
|
|
7
|
+
contents: read
|
|
8
|
+
jobs:
|
|
9
|
+
wheels:
|
|
10
|
+
strategy:
|
|
11
|
+
fail-fast: false
|
|
12
|
+
matrix:
|
|
13
|
+
include:
|
|
14
|
+
- os: ubuntu-latest
|
|
15
|
+
target: x86_64-unknown-linux-gnu
|
|
16
|
+
manylinux: '2014'
|
|
17
|
+
- os: ubuntu-24.04-arm
|
|
18
|
+
target: aarch64-unknown-linux-gnu
|
|
19
|
+
manylinux: '2014'
|
|
20
|
+
- os: ubuntu-latest
|
|
21
|
+
target: x86_64-unknown-linux-musl
|
|
22
|
+
manylinux: musllinux_1_2
|
|
23
|
+
- os: macos-15-intel
|
|
24
|
+
target: x86_64-apple-darwin
|
|
25
|
+
manylinux: auto
|
|
26
|
+
- os: macos-15
|
|
27
|
+
target: aarch64-apple-darwin
|
|
28
|
+
manylinux: auto
|
|
29
|
+
- os: windows-latest
|
|
30
|
+
target: x86_64-pc-windows-msvc
|
|
31
|
+
manylinux: auto
|
|
32
|
+
runs-on: ${{ matrix.os }}
|
|
33
|
+
steps:
|
|
34
|
+
- uses: actions/checkout@v4
|
|
35
|
+
- uses: actions/setup-python@v5
|
|
36
|
+
with:
|
|
37
|
+
python-version: '3.10'
|
|
38
|
+
- uses: PyO3/maturin-action@v1
|
|
39
|
+
with:
|
|
40
|
+
command: build
|
|
41
|
+
target: ${{ matrix.target }}
|
|
42
|
+
manylinux: ${{ matrix.manylinux }}
|
|
43
|
+
args: --release --locked --out dist
|
|
44
|
+
- name: Test installed wheel
|
|
45
|
+
if: matrix.manylinux != 'musllinux_1_2'
|
|
46
|
+
shell: bash
|
|
47
|
+
run: |
|
|
48
|
+
python -m pip install dist/*.whl pytest shapely==2.1.2
|
|
49
|
+
python -m pytest -q
|
|
50
|
+
- uses: actions/upload-artifact@v4
|
|
51
|
+
with:
|
|
52
|
+
name: wheels-${{ matrix.target }}
|
|
53
|
+
path: dist/*.whl
|
|
54
|
+
sdist:
|
|
55
|
+
runs-on: ubuntu-latest
|
|
56
|
+
steps:
|
|
57
|
+
- uses: actions/checkout@v4
|
|
58
|
+
- uses: PyO3/maturin-action@v1
|
|
59
|
+
with:
|
|
60
|
+
command: sdist
|
|
61
|
+
args: --out dist
|
|
62
|
+
- uses: actions/setup-python@v5
|
|
63
|
+
with:
|
|
64
|
+
python-version: '3.10'
|
|
65
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
66
|
+
- name: Test source distribution
|
|
67
|
+
run: |
|
|
68
|
+
python -m pip install dist/*.tar.gz pytest shapely==2.1.2
|
|
69
|
+
python -m pytest -q
|
|
70
|
+
- uses: actions/upload-artifact@v4
|
|
71
|
+
with:
|
|
72
|
+
name: sdist
|
|
73
|
+
path: dist/*.tar.gz
|
|
74
|
+
publish:
|
|
75
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
76
|
+
needs: [wheels, sdist]
|
|
77
|
+
runs-on: ubuntu-latest
|
|
78
|
+
environment:
|
|
79
|
+
name: pypi
|
|
80
|
+
url: https://pypi.org/p/coarsen
|
|
81
|
+
permissions:
|
|
82
|
+
id-token: write
|
|
83
|
+
steps:
|
|
84
|
+
- uses: actions/download-artifact@v4
|
|
85
|
+
with:
|
|
86
|
+
path: dist
|
|
87
|
+
merge-multiple: true
|
|
88
|
+
- uses: pypa/gh-action-pypi-publish@release/v1
|
coarsen-0.1.0/.gitignore
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Development
|
|
2
|
+
|
|
3
|
+
The core (`src/`) is usable without Python: `cargo test --locked`. Python support
|
|
4
|
+
is an optional Cargo feature. `python/coarsen/` contains the wrapper and type
|
|
5
|
+
information; `tests/` contains the original GEOS fixtures, projected real parcels,
|
|
6
|
+
and Python parity tests. `benchmarks/` contains the reproducible CPU benchmark.
|
|
7
|
+
No CLI, Parquet reader, projection implementation, or native-library loader is
|
|
8
|
+
included in the runtime package.
|
|
9
|
+
|
|
10
|
+
Use Rust ≥1.85 and Python ≥3.10. From the repository root:
|
|
11
|
+
|
|
12
|
+
```sh
|
|
13
|
+
uv venv --python 3.13
|
|
14
|
+
uv pip install maturin '.[dev,benchmark]'
|
|
15
|
+
uv run --no-sync maturin develop --release
|
|
16
|
+
cargo fmt --check
|
|
17
|
+
cargo clippy --locked --all-targets --all-features -- -D warnings
|
|
18
|
+
cargo test --locked
|
|
19
|
+
uv run --no-sync ruff check .
|
|
20
|
+
uv run --no-sync ruff format --check .
|
|
21
|
+
uv run --no-sync ty check
|
|
22
|
+
uv run --no-sync pytest --cov=coarsen tests/
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
If a Conda environment is active, deactivate it before `maturin develop`.
|
|
26
|
+
Maturin rejects simultaneous `CONDA_PREFIX` and `VIRTUAL_ENV` settings.
|
|
27
|
+
An alternative that avoids editable-install environment selection:
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
uv run --no-sync maturin build --release --locked --out dist
|
|
31
|
+
uv run --no-sync maturin sdist --out dist
|
|
32
|
+
uv venv --python 3.13 /tmp/coarsen-wheel-test
|
|
33
|
+
uv pip install --python /tmp/coarsen-wheel-test/bin/python dist/*.whl pytest shapely==2.1.2
|
|
34
|
+
/tmp/coarsen-wheel-test/bin/python -m pytest tests/
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
The parity suite deliberately requires GEOS 3.13.1, rather than silently testing
|
|
38
|
+
against a newer algorithm. Install the Shapely 2.1.2 binary wheel for this gate.
|
|
39
|
+
Generated wheels contain the LGPL license, attribution, type hints, and `py.typed`.
|
|
40
|
+
Source distributions contain Rust sources, Cargo.lock, Python sources, and fixtures.
|
|
41
|
+
|
|
42
|
+
# Release
|
|
43
|
+
|
|
44
|
+
CI checks rustfmt, Clippy, Cargo tests, Ruff, ty, and wheel-installed Python tests
|
|
45
|
+
on Linux, macOS, and Windows with Python 3.10–3.13. The release workflow builds
|
|
46
|
+
CPython abi3 wheels (3.10+) for manylinux x86_64/aarch64, musllinux x86_64,
|
|
47
|
+
macOS x86_64/arm64, and Windows x86_64, plus an sdist. All wheel targets except
|
|
48
|
+
musllinux are tested in their build jobs; the sdist is built and tested separately.
|
|
49
|
+
`workflow_dispatch` builds artifacts without publishing. Only `v*` tags publish.
|
|
50
|
+
|
|
51
|
+
Before the first release, the owner must create the GitHub repository and a
|
|
52
|
+
PyPI project/pending trusted publisher for `coarsen`, specifying that repository,
|
|
53
|
+
workflow `release.yml`, and environment `pypi`. Create the matching GitHub
|
|
54
|
+
`pypi` environment and any desired approval rules. No API token or secret is needed.
|
|
55
|
+
Set matching versions in Cargo.toml, pyproject.toml, and the Python `__version__`;
|
|
56
|
+
inspect the built artifacts and passing CI before creating a release tag.
|
|
57
|
+
Nothing is uploaded by local builds.
|
|
58
|
+
|
|
59
|
+
# Algorithm notes
|
|
60
|
+
|
|
61
|
+
Shared edges are extracted once in GEOS encounter order. The simplifier uses a
|
|
62
|
+
triangle-area threshold of tolerance squared, GEOS corner tie-breaking, and GEOS
|
|
63
|
+
3.13.1's double-double orientation predicate. Intersecting original edge envelopes
|
|
64
|
+
produce dependencies from earlier to later edges. Independent rounds run with
|
|
65
|
+
Rayon; immutable edges remain constraints. In inner-only mode only edges used by
|
|
66
|
+
exactly two rings are simplified and edges used by exactly one ring constrain them.
|
|
67
|
+
|
|
68
|
+
WKB is copied into owned Rust storage before detaching from Python. The core has
|
|
69
|
+
no Python objects, GEOS calls, or shared mutable global geometry state. Explicit
|
|
70
|
+
thread counts are local to a call; the default Rayon pool obeys `RAYON_NUM_THREADS`.
|
|
71
|
+
The wrapper restores precision-grid metadata lost in the WKB round trip using
|
|
72
|
+
Shapely's pointwise precision mode.
|
coarsen-0.1.0/Cargo.lock
ADDED
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
# This file is automatically @generated by Cargo.
|
|
2
|
+
# It is not intended for manual editing.
|
|
3
|
+
version = 4
|
|
4
|
+
|
|
5
|
+
[[package]]
|
|
6
|
+
name = "anyhow"
|
|
7
|
+
version = "1.0.104"
|
|
8
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
9
|
+
checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470"
|
|
10
|
+
|
|
11
|
+
[[package]]
|
|
12
|
+
name = "autocfg"
|
|
13
|
+
version = "1.5.1"
|
|
14
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
15
|
+
checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
|
|
16
|
+
|
|
17
|
+
[[package]]
|
|
18
|
+
name = "byteorder"
|
|
19
|
+
version = "1.5.0"
|
|
20
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
21
|
+
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
|
|
22
|
+
|
|
23
|
+
[[package]]
|
|
24
|
+
name = "coarsen"
|
|
25
|
+
version = "0.1.0"
|
|
26
|
+
dependencies = [
|
|
27
|
+
"anyhow",
|
|
28
|
+
"pyo3",
|
|
29
|
+
"rayon",
|
|
30
|
+
"rstar",
|
|
31
|
+
"rustc-hash",
|
|
32
|
+
"serde_json",
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
[[package]]
|
|
36
|
+
name = "crossbeam-deque"
|
|
37
|
+
version = "0.8.8"
|
|
38
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
39
|
+
checksum = "622f3fc73690be383c7214310406f28a90e6edeadc3cea882f9d71e495b9711a"
|
|
40
|
+
dependencies = [
|
|
41
|
+
"crossbeam-epoch",
|
|
42
|
+
"crossbeam-utils",
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
[[package]]
|
|
46
|
+
name = "crossbeam-epoch"
|
|
47
|
+
version = "0.9.21"
|
|
48
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
49
|
+
checksum = "dc74980687109a3b14c72fd458107bf0baa1da1a1a805e178d15501ba9b86d9d"
|
|
50
|
+
dependencies = [
|
|
51
|
+
"crossbeam-utils",
|
|
52
|
+
]
|
|
53
|
+
|
|
54
|
+
[[package]]
|
|
55
|
+
name = "crossbeam-utils"
|
|
56
|
+
version = "0.8.23"
|
|
57
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
58
|
+
checksum = "a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6"
|
|
59
|
+
|
|
60
|
+
[[package]]
|
|
61
|
+
name = "either"
|
|
62
|
+
version = "1.18.0"
|
|
63
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
64
|
+
checksum = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34"
|
|
65
|
+
|
|
66
|
+
[[package]]
|
|
67
|
+
name = "hash32"
|
|
68
|
+
version = "0.3.1"
|
|
69
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
70
|
+
checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606"
|
|
71
|
+
dependencies = [
|
|
72
|
+
"byteorder",
|
|
73
|
+
]
|
|
74
|
+
|
|
75
|
+
[[package]]
|
|
76
|
+
name = "heapless"
|
|
77
|
+
version = "0.8.0"
|
|
78
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
79
|
+
checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad"
|
|
80
|
+
dependencies = [
|
|
81
|
+
"hash32",
|
|
82
|
+
"stable_deref_trait",
|
|
83
|
+
]
|
|
84
|
+
|
|
85
|
+
[[package]]
|
|
86
|
+
name = "heck"
|
|
87
|
+
version = "0.5.0"
|
|
88
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
89
|
+
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
|
90
|
+
|
|
91
|
+
[[package]]
|
|
92
|
+
name = "itoa"
|
|
93
|
+
version = "1.0.18"
|
|
94
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
95
|
+
checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
|
|
96
|
+
|
|
97
|
+
[[package]]
|
|
98
|
+
name = "libc"
|
|
99
|
+
version = "0.2.189"
|
|
100
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
101
|
+
checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
|
|
102
|
+
|
|
103
|
+
[[package]]
|
|
104
|
+
name = "libm"
|
|
105
|
+
version = "0.2.16"
|
|
106
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
107
|
+
checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
|
|
108
|
+
|
|
109
|
+
[[package]]
|
|
110
|
+
name = "memchr"
|
|
111
|
+
version = "2.8.3"
|
|
112
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
113
|
+
checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
|
|
114
|
+
|
|
115
|
+
[[package]]
|
|
116
|
+
name = "num-traits"
|
|
117
|
+
version = "0.2.19"
|
|
118
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
119
|
+
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
|
|
120
|
+
dependencies = [
|
|
121
|
+
"autocfg",
|
|
122
|
+
"libm",
|
|
123
|
+
]
|
|
124
|
+
|
|
125
|
+
[[package]]
|
|
126
|
+
name = "once_cell"
|
|
127
|
+
version = "1.21.4"
|
|
128
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
129
|
+
checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
|
|
130
|
+
|
|
131
|
+
[[package]]
|
|
132
|
+
name = "portable-atomic"
|
|
133
|
+
version = "1.15.0"
|
|
134
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
135
|
+
checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
|
|
136
|
+
|
|
137
|
+
[[package]]
|
|
138
|
+
name = "proc-macro2"
|
|
139
|
+
version = "1.0.107"
|
|
140
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
141
|
+
checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
|
|
142
|
+
dependencies = [
|
|
143
|
+
"unicode-ident",
|
|
144
|
+
]
|
|
145
|
+
|
|
146
|
+
[[package]]
|
|
147
|
+
name = "pyo3"
|
|
148
|
+
version = "0.29.3"
|
|
149
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
150
|
+
checksum = "700d18fa267b73b9b521fd7e13580e2f446916f176cacee1ab63fcc8191f1655"
|
|
151
|
+
dependencies = [
|
|
152
|
+
"libc",
|
|
153
|
+
"once_cell",
|
|
154
|
+
"portable-atomic",
|
|
155
|
+
"pyo3-build-config",
|
|
156
|
+
"pyo3-ffi",
|
|
157
|
+
"pyo3-macros",
|
|
158
|
+
]
|
|
159
|
+
|
|
160
|
+
[[package]]
|
|
161
|
+
name = "pyo3-build-config"
|
|
162
|
+
version = "0.29.3"
|
|
163
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
164
|
+
checksum = "7b3fc0c4d08f6bb10e71fe39dfb9e2f59c6eb6854e22ec8092f50c69a4499adb"
|
|
165
|
+
dependencies = [
|
|
166
|
+
"target-lexicon",
|
|
167
|
+
]
|
|
168
|
+
|
|
169
|
+
[[package]]
|
|
170
|
+
name = "pyo3-ffi"
|
|
171
|
+
version = "0.29.3"
|
|
172
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
173
|
+
checksum = "dfc0b8e19df29aad7086cf977bb0c2a2f143e30567eb113e9cf72b62ca698330"
|
|
174
|
+
dependencies = [
|
|
175
|
+
"libc",
|
|
176
|
+
"pyo3-build-config",
|
|
177
|
+
]
|
|
178
|
+
|
|
179
|
+
[[package]]
|
|
180
|
+
name = "pyo3-macros"
|
|
181
|
+
version = "0.29.3"
|
|
182
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
183
|
+
checksum = "6100e8a4b5eba53afaa5ed078364851a0b2499c553a44c31026b929049b49dc6"
|
|
184
|
+
dependencies = [
|
|
185
|
+
"proc-macro2",
|
|
186
|
+
"pyo3-macros-backend",
|
|
187
|
+
"quote",
|
|
188
|
+
"syn 2.0.119",
|
|
189
|
+
]
|
|
190
|
+
|
|
191
|
+
[[package]]
|
|
192
|
+
name = "pyo3-macros-backend"
|
|
193
|
+
version = "0.29.3"
|
|
194
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
195
|
+
checksum = "6143877a16e82b5a727b7127ff4cd86858a24a28d745d72f43e6f227c7b1bdb3"
|
|
196
|
+
dependencies = [
|
|
197
|
+
"heck",
|
|
198
|
+
"proc-macro2",
|
|
199
|
+
"quote",
|
|
200
|
+
"syn 2.0.119",
|
|
201
|
+
]
|
|
202
|
+
|
|
203
|
+
[[package]]
|
|
204
|
+
name = "quote"
|
|
205
|
+
version = "1.0.47"
|
|
206
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
207
|
+
checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
|
|
208
|
+
dependencies = [
|
|
209
|
+
"proc-macro2",
|
|
210
|
+
]
|
|
211
|
+
|
|
212
|
+
[[package]]
|
|
213
|
+
name = "rayon"
|
|
214
|
+
version = "1.12.0"
|
|
215
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
216
|
+
checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d"
|
|
217
|
+
dependencies = [
|
|
218
|
+
"either",
|
|
219
|
+
"rayon-core",
|
|
220
|
+
]
|
|
221
|
+
|
|
222
|
+
[[package]]
|
|
223
|
+
name = "rayon-core"
|
|
224
|
+
version = "1.13.0"
|
|
225
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
226
|
+
checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
|
|
227
|
+
dependencies = [
|
|
228
|
+
"crossbeam-deque",
|
|
229
|
+
"crossbeam-utils",
|
|
230
|
+
]
|
|
231
|
+
|
|
232
|
+
[[package]]
|
|
233
|
+
name = "rstar"
|
|
234
|
+
version = "0.13.0"
|
|
235
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
236
|
+
checksum = "5912b862fa5ffb462607bfd1e35036c458c537921f508c8235a83d5f3987edfe"
|
|
237
|
+
dependencies = [
|
|
238
|
+
"heapless",
|
|
239
|
+
"num-traits",
|
|
240
|
+
"smallvec",
|
|
241
|
+
]
|
|
242
|
+
|
|
243
|
+
[[package]]
|
|
244
|
+
name = "rustc-hash"
|
|
245
|
+
version = "2.1.3"
|
|
246
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
247
|
+
checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d"
|
|
248
|
+
|
|
249
|
+
[[package]]
|
|
250
|
+
name = "serde"
|
|
251
|
+
version = "1.0.229"
|
|
252
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
253
|
+
checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
|
|
254
|
+
dependencies = [
|
|
255
|
+
"serde_core",
|
|
256
|
+
]
|
|
257
|
+
|
|
258
|
+
[[package]]
|
|
259
|
+
name = "serde_core"
|
|
260
|
+
version = "1.0.229"
|
|
261
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
262
|
+
checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
|
|
263
|
+
dependencies = [
|
|
264
|
+
"serde_derive",
|
|
265
|
+
]
|
|
266
|
+
|
|
267
|
+
[[package]]
|
|
268
|
+
name = "serde_derive"
|
|
269
|
+
version = "1.0.229"
|
|
270
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
271
|
+
checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
|
|
272
|
+
dependencies = [
|
|
273
|
+
"proc-macro2",
|
|
274
|
+
"quote",
|
|
275
|
+
"syn 3.0.6",
|
|
276
|
+
]
|
|
277
|
+
|
|
278
|
+
[[package]]
|
|
279
|
+
name = "serde_json"
|
|
280
|
+
version = "1.0.151"
|
|
281
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
282
|
+
checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"
|
|
283
|
+
dependencies = [
|
|
284
|
+
"itoa",
|
|
285
|
+
"memchr",
|
|
286
|
+
"serde",
|
|
287
|
+
"serde_core",
|
|
288
|
+
"zmij",
|
|
289
|
+
]
|
|
290
|
+
|
|
291
|
+
[[package]]
|
|
292
|
+
name = "smallvec"
|
|
293
|
+
version = "1.16.2"
|
|
294
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
295
|
+
checksum = "f9395f0f0eee849a9b707b2f06bb92a6a422090e2123bb2ef8e87a0e61892a8e"
|
|
296
|
+
|
|
297
|
+
[[package]]
|
|
298
|
+
name = "stable_deref_trait"
|
|
299
|
+
version = "1.2.1"
|
|
300
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
301
|
+
checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
|
|
302
|
+
|
|
303
|
+
[[package]]
|
|
304
|
+
name = "syn"
|
|
305
|
+
version = "2.0.119"
|
|
306
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
307
|
+
checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
|
|
308
|
+
dependencies = [
|
|
309
|
+
"proc-macro2",
|
|
310
|
+
"quote",
|
|
311
|
+
"unicode-ident",
|
|
312
|
+
]
|
|
313
|
+
|
|
314
|
+
[[package]]
|
|
315
|
+
name = "syn"
|
|
316
|
+
version = "3.0.6"
|
|
317
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
318
|
+
checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee"
|
|
319
|
+
dependencies = [
|
|
320
|
+
"proc-macro2",
|
|
321
|
+
"quote",
|
|
322
|
+
"unicode-ident",
|
|
323
|
+
]
|
|
324
|
+
|
|
325
|
+
[[package]]
|
|
326
|
+
name = "target-lexicon"
|
|
327
|
+
version = "0.13.5"
|
|
328
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
329
|
+
checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
|
|
330
|
+
|
|
331
|
+
[[package]]
|
|
332
|
+
name = "unicode-ident"
|
|
333
|
+
version = "1.0.26"
|
|
334
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
335
|
+
checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954"
|
|
336
|
+
|
|
337
|
+
[[package]]
|
|
338
|
+
name = "zmij"
|
|
339
|
+
version = "1.0.23"
|
|
340
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
341
|
+
checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
|
coarsen-0.1.0/Cargo.toml
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
name = "coarsen"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
edition = "2024"
|
|
5
|
+
rust-version = "1.85"
|
|
6
|
+
license = "LGPL-2.1-or-later"
|
|
7
|
+
description = "Ordered parallel port of GEOS 3.13.1 coverage simplification"
|
|
8
|
+
exclude = ["dist/", "benchmarks/*.out", "**/__pycache__/", "python/coarsen/*.so", "python/coarsen/*.pyd"]
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
|
|
11
|
+
[lib]
|
|
12
|
+
crate-type = ["cdylib", "rlib"]
|
|
13
|
+
|
|
14
|
+
[features]
|
|
15
|
+
python = ["dep:pyo3"]
|
|
16
|
+
|
|
17
|
+
[dependencies]
|
|
18
|
+
anyhow = "1"
|
|
19
|
+
pyo3 = { version = "0.29.3", optional = true, features = ["abi3-py310", "extension-module"] }
|
|
20
|
+
rayon = "1.12"
|
|
21
|
+
rstar = "0.13"
|
|
22
|
+
rustc-hash = "2"
|
|
23
|
+
|
|
24
|
+
[dev-dependencies]
|
|
25
|
+
serde_json = "1"
|