linkcell 0.3.2__tar.gz → 0.3.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 (64) hide show
  1. {linkcell-0.3.2 → linkcell-0.3.3}/.github/workflows/wheels.yml +15 -11
  2. {linkcell-0.3.2 → linkcell-0.3.3}/CHANGELOG.md +7 -0
  3. {linkcell-0.3.2 → linkcell-0.3.3}/CITATION.cff +1 -1
  4. {linkcell-0.3.2 → linkcell-0.3.3}/Cargo.lock +2 -2
  5. {linkcell-0.3.2 → linkcell-0.3.3}/Cargo.toml +1 -1
  6. {linkcell-0.3.2 → linkcell-0.3.3}/PKG-INFO +6 -4
  7. {linkcell-0.3.2 → linkcell-0.3.3}/README.md +4 -3
  8. {linkcell-0.3.2 → linkcell-0.3.3}/docs/how-to/embed-c.md +1 -1
  9. {linkcell-0.3.2 → linkcell-0.3.3}/docs/how-to/embed-python.md +4 -4
  10. {linkcell-0.3.2 → linkcell-0.3.3}/meson.build +1 -1
  11. {linkcell-0.3.2 → linkcell-0.3.3}/pyproject.toml +4 -3
  12. {linkcell-0.3.2 → linkcell-0.3.3}/python/Cargo.toml +2 -1
  13. {linkcell-0.3.2 → linkcell-0.3.3}/tests/python/test_knearest.py +1 -1
  14. {linkcell-0.3.2 → linkcell-0.3.3}/.github/workflows/ci.yml +0 -0
  15. {linkcell-0.3.2 → linkcell-0.3.3}/.gitignore +0 -0
  16. {linkcell-0.3.2 → linkcell-0.3.3}/CMakeLists.txt +0 -0
  17. {linkcell-0.3.2 → linkcell-0.3.3}/LICENSE +0 -0
  18. {linkcell-0.3.2 → linkcell-0.3.3}/assets/branding/README.md +0 -0
  19. {linkcell-0.3.2 → linkcell-0.3.3}/assets/branding/linkcell-icon.svg +0 -0
  20. {linkcell-0.3.2 → linkcell-0.3.3}/assets/branding/linkcell-logo-dark.svg +0 -0
  21. {linkcell-0.3.2 → linkcell-0.3.3}/assets/branding/linkcell-logo-light.svg +0 -0
  22. {linkcell-0.3.2 → linkcell-0.3.3}/assets/branding/linkcell-mark.jpg +0 -0
  23. {linkcell-0.3.2 → linkcell-0.3.3}/cbindgen.toml +0 -0
  24. {linkcell-0.3.2 → linkcell-0.3.3}/cmake/linkcell.pc.in +0 -0
  25. {linkcell-0.3.2 → linkcell-0.3.3}/cmake/linkcellConfig.cmake.in +0 -0
  26. {linkcell-0.3.2 → linkcell-0.3.3}/docs/explanation/mic-and-cells.md +0 -0
  27. {linkcell-0.3.2 → linkcell-0.3.3}/docs/how-to/embed-cpp.md +0 -0
  28. {linkcell-0.3.2 → linkcell-0.3.3}/docs/how-to/pkg-config.md +0 -0
  29. {linkcell-0.3.2 → linkcell-0.3.3}/docs/index.md +0 -0
  30. {linkcell-0.3.2 → linkcell-0.3.3}/docs/reference/algorithm.md +0 -0
  31. {linkcell-0.3.2 → linkcell-0.3.3}/docs/reference/c-api.md +0 -0
  32. {linkcell-0.3.2 → linkcell-0.3.3}/docs/tutorials/two-points.md +0 -0
  33. {linkcell-0.3.2 → linkcell-0.3.3}/examples/knn_hot.rs +0 -0
  34. {linkcell-0.3.2 → linkcell-0.3.3}/examples/meson.build +0 -0
  35. {linkcell-0.3.2 → linkcell-0.3.3}/examples/two_points.c +0 -0
  36. {linkcell-0.3.2 → linkcell-0.3.3}/examples/two_points.cpp +0 -0
  37. {linkcell-0.3.2 → linkcell-0.3.3}/include/linkcell.h +0 -0
  38. {linkcell-0.3.2 → linkcell-0.3.3}/include/linkcell.hpp +0 -0
  39. {linkcell-0.3.2 → linkcell-0.3.3}/include/linkcell_gpu.h +0 -0
  40. {linkcell-0.3.2 → linkcell-0.3.3}/include/linkcell_gpu.hpp +0 -0
  41. {linkcell-0.3.2 → linkcell-0.3.3}/linkcell/__init__.py +0 -0
  42. {linkcell-0.3.2 → linkcell-0.3.3}/meson_options.txt +0 -0
  43. {linkcell-0.3.2 → linkcell-0.3.3}/python/build.rs +0 -0
  44. {linkcell-0.3.2 → linkcell-0.3.3}/python/src/gpu.rs +0 -0
  45. {linkcell-0.3.2 → linkcell-0.3.3}/python/src/lib.rs +0 -0
  46. {linkcell-0.3.2 → linkcell-0.3.3}/scripts/check-install.sh +0 -0
  47. {linkcell-0.3.2 → linkcell-0.3.3}/scripts/regen-capi-headers.sh +0 -0
  48. {linkcell-0.3.2 → linkcell-0.3.3}/src/capi.rs +0 -0
  49. {linkcell-0.3.2 → linkcell-0.3.3}/src/cell.rs +0 -0
  50. {linkcell-0.3.2 → linkcell-0.3.3}/src/error.rs +0 -0
  51. {linkcell-0.3.2 → linkcell-0.3.3}/src/gpu/capi.cpp +0 -0
  52. {linkcell-0.3.2 → linkcell-0.3.3}/src/gpu/knearest.cpp +0 -0
  53. {linkcell-0.3.2 → linkcell-0.3.3}/src/knearest.rs +0 -0
  54. {linkcell-0.3.2 → linkcell-0.3.3}/src/lib.rs +0 -0
  55. {linkcell-0.3.2 → linkcell-0.3.3}/subprojects/gpulite.wrap +0 -0
  56. {linkcell-0.3.2 → linkcell-0.3.3}/subprojects/packagefiles/gpulite/meson.build +0 -0
  57. {linkcell-0.3.2 → linkcell-0.3.3}/tests/abi.rs +0 -0
  58. {linkcell-0.3.2 → linkcell-0.3.3}/tests/agree.rs +0 -0
  59. {linkcell-0.3.2 → linkcell-0.3.3}/tests/cmake-consumer/CMakeLists.txt +0 -0
  60. {linkcell-0.3.2 → linkcell-0.3.3}/tests/gpu_agree.cpp +0 -0
  61. {linkcell-0.3.2 → linkcell-0.3.3}/tests/python/test_knearest_cuda.py +0 -0
  62. {linkcell-0.3.2 → linkcell-0.3.3}/third_party/gpulite/LICENSE +0 -0
  63. {linkcell-0.3.2 → linkcell-0.3.3}/third_party/gpulite/README.md +0 -0
  64. {linkcell-0.3.2 → linkcell-0.3.3}/third_party/gpulite/gpulite/gpulite.hpp +0 -0
@@ -44,7 +44,7 @@ jobs:
44
44
  with:
45
45
  python-version: "3.12"
46
46
  - name: Build abi3 wheel
47
- run: uvx --from 'cibuildwheel>=3.2,<4' cibuildwheel --output-dir wheelhouse
47
+ run: uvx --from 'cibuildwheel>=4,<5' cibuildwheel --output-dir wheelhouse
48
48
  env:
49
49
  CIBW_BUILD: "cp312-*"
50
50
  CIBW_SKIP: "*musllinux* *i686* cp3??t-*"
@@ -57,9 +57,11 @@ jobs:
57
57
  name: wheels-abi3-${{ matrix.name }}
58
58
  path: ./wheelhouse/*.whl
59
59
 
60
- # Free-threaded set: one wheel per CPython t ABI (no limited API).
61
- freethreaded:
62
- name: freethreaded ${{ matrix.name }}
60
+ # One abi3t wheel per platform (CPython 3.15+ GIL and free-threaded).
61
+ # abi3audit --strict still treats PEP 793 PyModExport / PyType_FromSlots
62
+ # as non-abi3, so the audit step is off for this job only.
63
+ abi3t:
64
+ name: abi3t ${{ matrix.name }}
63
65
  runs-on: ${{ matrix.os }}
64
66
  strategy:
65
67
  fail-fast: false
@@ -79,18 +81,20 @@ jobs:
79
81
  - uses: dtolnay/rust-toolchain@stable
80
82
  - uses: astral-sh/setup-uv@v5
81
83
  with:
82
- python-version: "3.13"
83
- - name: Build free-threaded wheels
84
- run: uvx --from 'cibuildwheel>=3.2,<4' cibuildwheel --output-dir wheelhouse
84
+ python-version: "3.15"
85
+ - name: Build abi3t wheel
86
+ run: uvx --from 'cibuildwheel>=4,<5' cibuildwheel --output-dir wheelhouse
85
87
  env:
86
- CIBW_BUILD: "cp314t-*"
87
- CIBW_SKIP: "*musllinux* *i686*"
88
+ CIBW_BUILD: "cp315-*"
89
+ CIBW_SKIP: "*musllinux* *i686* cp3??t-*"
88
90
  CIBW_ARCHS: ${{ matrix.arch }}
91
+ CIBW_ENVIRONMENT: MATURIN_PEP517_ARGS="--features abi3t"
92
+ CIBW_AUDIT_COMMAND: ""
89
93
  CIBW_TEST_REQUIRES: pytest numpy
90
94
  CIBW_TEST_COMMAND: pytest {project}/tests/python -q
91
95
  - uses: actions/upload-artifact@v4
92
96
  with:
93
- name: wheels-freethreaded-${{ matrix.name }}
97
+ name: wheels-abi3t-${{ matrix.name }}
94
98
  path: ./wheelhouse/*.whl
95
99
 
96
100
  sdist:
@@ -114,7 +118,7 @@ jobs:
114
118
  # on this job.
115
119
  publish:
116
120
  name: Publish to PyPI
117
- needs: [abi3, freethreaded, sdist]
121
+ needs: [abi3, abi3t, sdist]
118
122
  runs-on: ubuntu-latest
119
123
  if: >-
120
124
  github.repository == 'd-SEAMS/linkcell' &&
@@ -2,6 +2,13 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.3.3
6
+
7
+ Two wheels: `abi3-py312` (GIL, CPython 3.12+) and `abi3t-py315`
8
+ (PEP 803, CPython 3.15 GIL and free-threaded). cibuildwheel 4.x
9
+ builds 3.15.0rc1 by default. PyO3 0.29 `abi3t-py315`; maturin
10
+ 1.14+ tags the `abi3t` ABI. The 0.3.2 `cp314t` set is gone.
11
+
5
12
  ## 0.3.2
6
13
 
7
14
  Python `linkcell` module (maturin / PyO3). Arrays are DLPack via
@@ -7,7 +7,7 @@ authors:
7
7
  given-names: Rohit
8
8
  orcid: https://orcid.org/0000-0002-2393-8056
9
9
  license: MIT
10
- version: 0.3.2
10
+ version: 0.3.3
11
11
  date-released: "2026-08-17"
12
12
  repository-code: "https://github.com/d-SEAMS/linkcell"
13
13
  url: "https://github.com/d-SEAMS/linkcell"
@@ -79,14 +79,14 @@ checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
79
79
 
80
80
  [[package]]
81
81
  name = "linkcell"
82
- version = "0.3.2"
82
+ version = "0.3.3"
83
83
  dependencies = [
84
84
  "rayon",
85
85
  ]
86
86
 
87
87
  [[package]]
88
88
  name = "linkcell-python"
89
- version = "0.3.2"
89
+ version = "0.3.3"
90
90
  dependencies = [
91
91
  "cc",
92
92
  "dlpk",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "linkcell"
3
- version = "0.3.2"
3
+ version = "0.3.3"
4
4
  edition = "2021"
5
5
  rust-version = "1.70"
6
6
  description = "Periodic linked-cell k-nearest neighbour search for molecular simulations"
@@ -1,11 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: linkcell
3
- Version: 0.3.2
3
+ Version: 0.3.3
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Classifier: Programming Language :: Python :: 3.12
7
7
  Classifier: Programming Language :: Python :: 3.13
8
8
  Classifier: Programming Language :: Python :: 3.14
9
+ Classifier: Programming Language :: Python :: 3.15
9
10
  Requires-Dist: pytest>=8.0 ; extra == 'test'
10
11
  Requires-Dist: numpy>=1.26 ; extra == 'test'
11
12
  Provides-Extra: test
@@ -55,8 +56,9 @@ Python takes the same search through DLPack (dlpk). Any `__dlpack__()`
55
56
  object (numpy, torch, jax, cupy) is a valid `xyz` / `cell`, on any
56
57
  device. A CUDA `xyz` stays on device; a CUDA `cell` is inverted on
57
58
  device. `torch.from_dlpack` consumes `(indices, dist2)`.
58
- Wheels: one CPython 3.12 limited-ABI (`abi3`) artifact per platform, and
59
- one free-threaded set (`cp314t`; PyO3 0.29 needs 3.14+ for `t`).
59
+ Wheels: one CPython 3.12 limited-ABI (`abi3`) artifact per platform
60
+ (GIL, 3.12+), and one `abi3t` artifact (CPython 3.15+ GIL and
61
+ free-threaded).
60
62
 
61
63
  ```
62
64
  pip install linkcell
@@ -85,7 +87,7 @@ As a wrap, Meson exposes `linkcell_dep`:
85
87
  ```
86
88
  [wrap-git]
87
89
  url = https://github.com/d-SEAMS/linkcell.git
88
- revision = v0.3.2
90
+ revision = v0.3.3
89
91
  depth = 1
90
92
 
91
93
  [provide]
@@ -34,8 +34,9 @@ Python takes the same search through DLPack (dlpk). Any `__dlpack__()`
34
34
  object (numpy, torch, jax, cupy) is a valid `xyz` / `cell`, on any
35
35
  device. A CUDA `xyz` stays on device; a CUDA `cell` is inverted on
36
36
  device. `torch.from_dlpack` consumes `(indices, dist2)`.
37
- Wheels: one CPython 3.12 limited-ABI (`abi3`) artifact per platform, and
38
- one free-threaded set (`cp314t`; PyO3 0.29 needs 3.14+ for `t`).
37
+ Wheels: one CPython 3.12 limited-ABI (`abi3`) artifact per platform
38
+ (GIL, 3.12+), and one `abi3t` artifact (CPython 3.15+ GIL and
39
+ free-threaded).
39
40
 
40
41
  ```
41
42
  pip install linkcell
@@ -64,7 +65,7 @@ As a wrap, Meson exposes `linkcell_dep`:
64
65
  ```
65
66
  [wrap-git]
66
67
  url = https://github.com/d-SEAMS/linkcell.git
67
- revision = v0.3.2
68
+ revision = v0.3.3
68
69
  depth = 1
69
70
 
70
71
  [provide]
@@ -19,7 +19,7 @@ the pointer.
19
19
  ```
20
20
  [wrap-git]
21
21
  url = https://github.com/d-SEAMS/linkcell.git
22
- revision = v0.3.2
22
+ revision = v0.3.3
23
23
  depth = 1
24
24
 
25
25
  [provide]
@@ -38,7 +38,7 @@ device; the host only reads the four launch ints (`nx`, `ny`,
38
38
 
39
39
  Wheels:
40
40
 
41
- - limited ABI: one `abi3` wheel per platform, CPython 3.12+
42
- - free-threaded set: `cp314t` (PyO3 0.29 does not wrap
43
- free-threaded 3.13; no stable ABI on `t` until PyO3 `abi3t` /
44
- CPython 3.15)
41
+ - `abi3-py312`: one wheel per platform, GIL CPython 3.12+
42
+ - `abi3t-py315`: one wheel per platform, CPython 3.15+ GIL and
43
+ free-threaded (PEP 803). Build with maturin 1.14+ and
44
+ `--features abi3t`.
@@ -2,7 +2,7 @@ project(
2
2
  'linkcell',
3
3
  ['c', 'cpp'],
4
4
  # Keep in lockstep with Cargo.toml [package].version (source of truth).
5
- version: '0.3.2',
5
+ version: '0.3.3',
6
6
  meson_version: '>=1.2.0',
7
7
  license: 'MIT',
8
8
  default_options: [
@@ -1,10 +1,10 @@
1
1
  [build-system]
2
- requires = ["maturin>=1.7,<2"]
2
+ requires = ["maturin>=1.14,<2"]
3
3
  build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "linkcell"
7
- version = "0.3.2"
7
+ version = "0.3.3"
8
8
  description = "Periodic linked-cell k-nearest neighbour search"
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -16,6 +16,7 @@ classifiers = [
16
16
  "Programming Language :: Python :: 3.12",
17
17
  "Programming Language :: Python :: 3.13",
18
18
  "Programming Language :: Python :: 3.14",
19
+ "Programming Language :: Python :: 3.15",
19
20
  ]
20
21
  dependencies = []
21
22
 
@@ -34,7 +35,7 @@ python-source = "."
34
35
  features = ["pyo3/extension-module"]
35
36
 
36
37
  [tool.cibuildwheel]
37
- skip = ["pp*", "*musllinux*", "*i686*"]
38
+ skip = ["*musllinux*", "*i686*"]
38
39
  test-requires = ["pytest", "numpy"]
39
40
  test-command = "pytest {project}/tests/python -q"
40
41
 
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "linkcell-python"
3
- version = "0.3.2"
3
+ version = "0.3.3"
4
4
  edition = "2021"
5
5
  rust-version = "1.88"
6
6
  license = "MIT"
@@ -14,6 +14,7 @@ crate-type = ["cdylib"]
14
14
  [features]
15
15
  default = []
16
16
  abi3 = ["pyo3/abi3-py312"]
17
+ abi3t = ["pyo3/abi3t-py315"]
17
18
 
18
19
  [dependencies]
19
20
  dlpk = { version = "0.4.1", features = ["pyo3", "ndarray"] }
@@ -10,7 +10,7 @@ def _pair(xyz, cell, k, **kwargs):
10
10
 
11
11
 
12
12
  def test_version():
13
- assert linkcell.__version__ == "0.3.2"
13
+ assert linkcell.__version__ == "0.3.3"
14
14
 
15
15
 
16
16
  def test_periodic_image():
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